半夜突然想到的一个指针问题!
c语言吧
全部回复
仅看楼主
level 1
如下:#include
main(){ int i=0,*a,*b,*c,*d; *a=*b=*c=*d=i; *b=2; *c=4; *d=6; printf("%d\t%d\t%d\t%d\n",*a,*b,*c,*d); getch(); }结果是:0 2 4 6我想知道的是,指针b,c,d的指向改了吗,都指向哪了?
2005年12月15日 04点12分 1
level 7
这样很危险你定义指针的时候,指针变量指向的地址是随机的,按你赋值的方法,是把指针指向的地方的值变为2,这是很危险的,因为谁也不知道你的指针原来指向什么地方还是老实点用 a=&i 吧,
2005年12月15日 04点12分 2
level 2
*b=2;指针没有进行初始化也能用?! 不会报错吗?
2005年12月15日 04点12分 3
level 7
能,也不一定会报错,只是谁也不知道会出什么问题.......
2005年12月15日 04点12分 4
level 2
运气好的话,指向一个错误地址,会报错。运气不好的话,指向一个有效地址,直接修改里面的值,整个程序出问题,而且很难查出原因
2005年12月15日 05点12分 5
level 0
2楼说的对
2005年12月15日 05点12分 6
level 1
恩,明白了
2005年12月15日 05点12分 7
1