*(p++)

dikong 2008-10-14 05:05:52
main()
{
int x[]={1,2,3,4,5,6},*p=&x[2];
printf("%d\n",*(p++));
}
我用VC编译的输出结果是3,为什么?
而且(*p)++结果也是3;
...全文
231 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
leiminlovesoft 2008-10-15
  • 打赏
  • 举报
回复
int x[]={1,2,3,4,5,6},*p=&x[2];

要测试这种最好不要用那种 1,2,3之类的,这样不好区分,8, 20, 72, 7, 9 这种就可以,不至于,当P自增之后,有可能与元素值一样

你再看看++运算符的运算。。
leiminlovesoft 2008-10-15
  • 打赏
  • 举报
回复
这个是运算符优先级的问题,* 虽然没有 ++ 优先级高 ,

但是在这里,你用的是后++所以,

表达式的值虽然加了1,但是变量的值却还是原来的值,

如果是前++就不一样的
canican 2008-10-15
  • 打赏
  • 举报
回复
*(p++) 先*p取值,printf语句结束后地址p+1
(*p)++ 先*p取值,printf语句结束后*p即x[2]+1
yingdishu2 2008-10-15
  • 打赏
  • 举报
回复
int x[]={1,2,3,4,5,6},*p=&x[2];
printf("%d\n",*(p++));

p指向X[2],X[2]里面的值为3
你输出的就是3
输出后++指向X[3]
JYYCOM 2008-10-15
  • 打赏
  • 举报
回复
我建议楼主看看《C和指针》里面关于数组和指针的东西,肯定茅塞顿开
malu_1982 2008-10-14
  • 打赏
  • 举报
回复
你想得到什么结果
hyyuanqiang 2008-10-14
  • 打赏
  • 举报
回复
re
HotHat 2008-10-14
  • 打赏
  • 举报
回复
回去好好看一下,++这个运算符的用法。
xdxiaodao 2008-10-14
  • 打赏
  • 举报
回复
本身p指向的就是3
是加了地址后取值,但是++地址要到下一次使用才有反应
换成++(*p),试一下,输出应该是4。
jzd8000 2008-10-14
  • 打赏
  • 举报
回复
简而言之:*(p++)
可分解为两句代码,
*p
然后
p++
waydream 2008-10-14
  • 打赏
  • 举报
回复
p=&x[2] //这里p指向的就是3
*(p++) //这据执行完p指向的是4,但p ++这个运算符函数返回值还是指向3的地址,所以取值*还是3
//如果是*(++p) 这个++运算符函数返回值就是指向4的地址了
至于(*p)++ 道理是一样的 只是++返回的数不表示地址了而直接就是个数值3。
dic_walter 2008-10-14
  • 打赏
  • 举报
回复
main()
{
int x[]={1,2,3,4,5,6},*p=&x[2];
printf("%d\n",*(p++));
}
=================================
*p = &x[2];//表示P指向x[2]的地址
printf("%d\n",*(p++));//打印*p后,p++
printf("%d\n",*(p)++);//打印*p后,(*p)++
所以打印出来,都是一样的啦
webtop1 2008-10-14
  • 打赏
  • 举报
回复
本身p指向的就是3
是加了地址后取值,但是++地址要到下一次使用才有反应
hmsuccess 2008-10-14
  • 打赏
  • 举报
回复
*(p++)不是一个表达式,所以,先先取*p的值,再将p加1,
askingbo 2008-10-14
  • 打赏
  • 举报
回复
很简单啊,
假设a=2;
a++ 也是等于2的啊
++a 才等于3的-
就呆在云上 2008-10-14
  • 打赏
  • 举报
回复
本身p指向的就是3
是加了地址后取值,但是++地址要到下一次使用才有反应
因此,后面的就更加简单了
要不是试试:
++*(p)
  • 打赏
  • 举报
回复
换*(++p),++(*p)看看咯
  • 打赏
  • 举报
回复
呵呵,因为都是后加1
phz1985 2008-10-14
  • 打赏
  • 举报
回复
printf("%d\n",*(p++)); //printf("%d\n", *p); p++;
(*p)++;//*p; p++;

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧