void main() { int i=50,j=60,*p1=&i,*p2=&j; *p1++; printf("%d\n",*p1); (*p1)++; printf("%d\n",*p1);为什么不是书上的60,61呢,是不是哪里出错了?void main(){int ARRAY[]={50,60};int *p1=&ARRAY[0],*p2=&ARRAY[1];*p1++;printf("%d\n",*p1);(*p1)

来源:学生作业帮助网 编辑:作业帮 时间:2024/07/28 12:22:58
void main() { int i=50,j=60,*p1=&i,*p2=&j; *p1++; printf(
xTmOP+u ]l+0Dߌӗe 54nnlDocc_̽m/<$FH_Lvsy[ jen6M ߾3;$g^AEh7!y1!mbRHTإ(߃E&+650'%cD#Kȣ$&1M̓X}2)m,>TY`U1ʫ^x%"H/3^_T:(D1TU(Ҡ*zJ@*xƓ%GX|~E8Ţ'!༂r@OUC, }fxyFg˼,hӧVhyg\42>82EY H/j!lP6L7] nmviyjAmjCS6 5(Ҹow@"u2glQ.s ([{q W~L-WBLr(

void main() { int i=50,j=60,*p1=&i,*p2=&j; *p1++; printf("%d\n",*p1); (*p1)++; printf("%d\n",*p1);为什么不是书上的60,61呢,是不是哪里出错了?void main(){int ARRAY[]={50,60};int *p1=&ARRAY[0],*p2=&ARRAY[1];*p1++;printf("%d\n",*p1);(*p1)
void main() { int i=50,j=60,*p1=&i,*p2=&j; *p1++; printf("%d\n",*p1); (*p1)++; printf("%d\n",*p1);

为什么不是书上的60,61呢,是不是哪里出错了?
void main()
{
int ARRAY[]={50,60};
int *p1=&ARRAY[0],*p2=&ARRAY[1];
*p1++;
printf("%d\n",*p1);
(*p1)++;
printf("%d\n",*p1);
}
其实我对指针的理解是没有错的,可能是地址分配有问题吧,数组是连续的地址,换成数组就好了,但为什么前面输出的是地址呢,我用了*取值的呀!

void main() { int i=50,j=60,*p1=&i,*p2=&j; *p1++; printf("%d\n",*p1); (*p1)++; printf("%d\n",*p1);为什么不是书上的60,61呢,是不是哪里出错了?void main(){int ARRAY[]={50,60};int *p1=&ARRAY[0],*p2=&ARRAY[1];*p1++;printf("%d\n",*p1);(*p1)
你把i=50,j=60二者的位置调换一下,写成int j=60,i=50,就是书上的结果了.因为有些编译器是把先碰到的变量定义安排在高地址,而把后碰到的变量定义安排在低地址,且一般情况下是紧挨着的.而另一些编译器则相反……其中*p1++由于++是右结合的,所以是给p1++而不是给*p1作++,仅此而已.