首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

指针有关问题求教

2012-10-15 
指针问题求教这是老谭书里的一个例子,我做了点修改,就是想看看指针在开始和结束 地址有没有变化。C/C++ cod

指针问题求教
这是老谭书里的一个例子,我做了点修改,就是想看看指针在开始和结束 地址有没有变化。

C/C++ code
main(){  int *p,i,a[10];  p=a; for(i=0;i<10;i++)*p++=i;    p=a;        for(i=0;i<10;i++)printf("%d\t%d\n",p++,&a[i]); //去了这个循环 下面的p的指针就正确了,不知道一个循环的打印为什么会造成指针的变化?  for(i=0;i<10;i++)  printf("a[%d]=%d\n",i,*p++);  system("pause");}





[解决办法]
你在打印p++的时候,p一直在做自加运算,
在最后一个for循环中,p已经不再指向数组的首地址了,
你应该在之前加一个p=a 让p再指回去
[解决办法]
printf("%d\t%d\n",p++,&a[i]); //去了这个循环 下面的p的指针就正确了,不知道一个循环的打印为什么会造成指针的变化?
这个循环会造成p的地址的变化,使用%d格式去打印p++,我想应该回报警告的,因为p++是一个地址是unsigned int类型的,如果你想真的打印地址建议你使用%p去打印。

热点排行