指针有关问题求教
指针问题求教这是老谭书里的一个例子,我做了点修改,就是想看看指针在开始和结束 地址有没有变化。C/C++ cod
指针问题求教
这是老谭书里的一个例子,我做了点修改,就是想看看指针在开始和结束 地址有没有变化。
C/C++ codemain(){ 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去打印。