*ptr++
和 ++*pt
r两种表达方式不同。下面通过一个示例代码来了解这两个表达式之间的区别。
#include <stdio.h> int main(void) { int aiData[5] = {100,200,30,40,50}; int *ptr = aiData; *ptr++; printf(aiData[0] = %d, aiData[1] = %d, *piData = %d, aiData[0], aiData[1], *ptr); return 0; }
运行上面代码,得到以下结果:
100, 200, 200
解释:
在上面的示例中,涉及到两个运算符,并且都具有不同的优先级。 post ++ 的优先级高于 *
,所以第一个 post ++
将先执行,上面的表达式,*p++
将等价于 *(p++)
。 换句话说,它是地址的后增量,所以输出是: 100、200、200。
示例代码2:
#include <stdio.h> int main(void) { int aiData[5] = {100,200,300,400,500}; int *ptr = aiData; ++*ptr; printf(aiData[0] = %d, aiData[1] = %d, *ptr = %d, aiData[0], aiData[1], *ptr); return 0; }
运行后输出结果为:
101 , 200 , 101
解释:
在上面的示例中,涉及两个运算符,并且都具有相同的优先级,具有从右到左的关联性。 所以上面的表达式 ++*p
等价于 ++ (*p)
。它是值的预增量,输出是:101、200、101。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。