指针错误解析


错误
正确
1.char *s="abc",*t; *t=s;
char *s="abc",*t; t=s;
2.char *s="abc",*t; *t=*s;
 
3.int *i=(int *)10;*i=11;
 
4.int *i=10;*i=11;
 
解析
1.编译错误,*s为字符“a” ,*t为字符变量 字符!=字符变量所以错误!
2.运行会错误,因为程序没有为t分配存储空间
3.将一固定的地址赋值给一个整型指针是非常危险的,相当于在地址为10的地方开辟了一个空间存放11,可能不合法。
4.编译错误,和第一个情况一样 整型!=整型指针
注意:这种情况下会误解为 指针-》指针,其实只是指针等于指针,是横向并非纵向
思考
整数情况下的
#include<stdio.h>
int main(void){
int a=8;
int *s=&a;
int *t;
*t=*s;
printf("%d",*t);
}

传入函数情况下

#include<stdio.h>
void test(char a[]){
printf("%s",a);
return;
}
int main(void){
char *s="abc";
char *t;
t=s;
test(t);//a[] 相当于 *a
}



发布了28 篇原创文章 · 获赞 14 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/qq_28738419/article/details/78395387
今日推荐