怎么理解指针运算符"*"和自增"++"的应用?

例:int a[5]={11,22,33,44,55};
int p=a;
printf("*p++ = %d\n",*p++);
printf("
++p = %d\n",*++p);
上面的例子,输出结果都不一样,但它们优先级都是自右向左结合,该怎么理解?

请大神指点迷津,感谢!!!!

4个回答

这个问题主要还是理解 ++ 的功能,与 * 与 ++ 的执行优先级。
++ 在后是先执行,再加一;而在前是先加一,再执行。

bldwihc
施主老衲要 谢谢~
大约 4 年之前 回复

*p++返回的是自增前的值
*++p返回的是之后的值

caozhy
贵阳老马马善福专业维修游泳池堵漏防水工程 回复施主老衲要: 如果我的回答帮助了您,请及时采纳,方法是,点击我回答右边的蓝色采纳按钮。谢谢!
大约 4 年之前 回复
bldwihc
施主老衲要 谢谢~~~
大约 4 年之前 回复

p++是先用后加
++p是先加后用

p++第一次用的值是p的值
++p第一次用的值是p的值加1
然后再进行指针运算

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问