读书人

指针有关问题求教

发布时间: 2012-10-15 09:45:25 作者: rapoo

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

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去打印。

读书人网 >C语言

热点推荐