int a[5]={1,2,3,4,5},*p; p=a; printf("%d %d",*p,*(p++)); 为啥输出为1 1
展开全部
因为 *(p++) 用的是 后缀加加,按规定,在表达式内不自增,出了表达式后再自增。
所以:
printf("%d %d",*p,*(p++));
就等于:
printf("%d %d",*p,*(p));
输出 1 1
再执行 p=p+1; (地址增 1*sizeof(int) ).
----------
你可以打印地址,看p指向的地址变化
printf("%p\n",p);
printf("%d %d\n",*p,*(p++));
printf("%p\n",p);
所以:
printf("%d %d",*p,*(p++));
就等于:
printf("%d %d",*p,*(p));
输出 1 1
再执行 p=p+1; (地址增 1*sizeof(int) ).
----------
你可以打印地址,看p指向的地址变化
printf("%p\n",p);
printf("%d %d\n",*p,*(p++));
printf("%p\n",p);
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询