C指针求教!
#include<stdio.h>
void main()
{int a[5]={1,2,3,4,5},b[5]={1,2,3,4,5},c[5]={1,2,3,4,5},*p=a,*q=b,*w=c;
printf("\n\n%3d,%3d,%3d\n\n",*p,*q,*w);
printf("\n\n%3d,%3d,%3d\n\n",*p++,*(q++),(*w)++);
printf("\n\n%3d,%3d,%3d\n\n",*p,*q,*w);
printf("\n\n%3d,%3d,%3d\n\n",a[1],b[1],c[1]);
}
我想着,第一次全部输出1,1,1
第二次应该输出 1,然后p++,p改指向2;
2,q++指向2,然后输出q;
1,先得到*w,1,然后给1 ++得2;改变了c[1];
这样的话,的三次输出应该是2,2,2
那么最后输出第一项时,应该是1,1,2,因为c[1]在第二次输出时被改变了。而且的三次输出的最后一个2,不是c[2],而是,c[1];
可是,运行的结果并不是这样子,不知道为什么,故来求教!
我不是钻牛角尖,只是想通过它,了解一下× 与++的关系,谢谢各位!