struct m { int x; int *y; }*p; int a[4]={12,13,-40,100};struct m b[4]={10,&a[2],9,&a[3],8,&a[0],7,&a[7]};若p=b;printf("%d\n",++p->x);printf("%d\n",p->x);为什么两个输出的都是11?(VC++6.0)
来源:学生作业帮助网 编辑:作业帮 时间:2024/08/14 13:06:58
![struct m { int x; int *y; }*p; int a[4]={12,13,-40,100};struct m b[4]={10,&a[2],9,&a[3],8,&a[0],7,&a[7]};若p=b;printf(](/uploads/image/z/8583780-12-0.jpg?t=struct+m+%7B+int+x%3B+int+%2Ay%3B+%7D%2Ap%3B+int+a%5B4%5D%3D%7B12%2C13%2C-40%2C100%7D%3Bstruct+m+b%5B4%5D%3D%7B10%2C%26a%5B2%5D%2C9%2C%26a%5B3%5D%2C8%2C%26a%5B0%5D%2C7%2C%26a%5B7%5D%7D%3B%E8%8B%A5p%3Db%3Bprintf%28%22%25d%5Cn%22%2C%2B%2Bp-%3Ex%29%3Bprintf%28%22%25d%5Cn%22%2Cp-%3Ex%29%3B%E4%B8%BA%E4%BB%80%E4%B9%88%E4%B8%A4%E4%B8%AA%E8%BE%93%E5%87%BA%E7%9A%84%E9%83%BD%E6%98%AF11%3F%EF%BC%88VC%2B%2B6.0%EF%BC%89)
xݒN@_1ѨKJq;.ąALh FEXh$#^f-+^iF1ՙΙ;Ӑވ6:d֢q&e\Ը}D'DCRN,D4I8ѴSo6eA\^Y!'OtbShDUNo[xoYvBHQS"W5r_}z%_٣Y;i҃-@HB.!V ;j" Fjs̟!ZeBɉLڧECdwjpxi2=ٻ:_ r3D6e%]hBԲ"EV۪k%me^cLOQk&oȑh
^ RLF
struct m { int x; int *y; }*p; int a[4]={12,13,-40,100};struct m b[4]={10,&a[2],9,&a[3],8,&a[0],7,&a[7]};若p=b;printf("%d\n",++p->x);printf("%d\n",p->x);为什么两个输出的都是11?(VC++6.0)
struct m { int x; int *y; }*p; int a[4]={12,13,-40,100};
struct m b[4]={10,&a[2],9,&a[3],8,&a[0],7,&a[7]};
若p=b;
printf("%d\n",++p->x);
printf("%d\n",p->x);
为什么两个输出的都是11?(VC++6.0)
struct m { int x; int *y; }*p; int a[4]={12,13,-40,100};struct m b[4]={10,&a[2],9,&a[3],8,&a[0],7,&a[7]};若p=b;printf("%d\n",++p->x);printf("%d\n",p->x);为什么两个输出的都是11?(VC++6.0)
由于p=b,即p指向b所在内存
p->x就是b[0].x,所以等于10
printf("%d\n",++p->x); 中++在前,即先进行+1再返回值给printf,所以输出11
为什么后面的也是11呢,举个例子y=1,y++后y=2了,知道了吧,所以p->x值已经变为11了
所以第二个输出也是11