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/05/01 00:15:10
void main() { int i=50,j=60,*p1=&i,*p2=&j; *p1++; printf(

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作++,仅此而已.