【发布时间】:2020-06-17 22:48:16
【问题描述】:
在this youtube video 中,我遇到了以下示例:
但是,对于第一个示例,它们对我来说似乎不正确:
*ptr++
在我的理解中,这意味着,如果++ 的优先级高于*,则在指针运算中将指针加1,然后获取存储在此新指针指向的地址中的值。所以代码
x = *ptr++;
应该等于,
ptr++;
x = *ptr;
这要么与视频冲突,要么我正在混合一些东西。你能告诉我我是对是错吗?
【问题讨论】:
-
不,
ptr++是发布-增量。 -
@WeatherVane 哎呀,是的....谢谢
-
优先级相关的地方如图所示,因此
(*ptr)++使用括号覆盖优先级,增加数据而不是指针。 -
请不要将问题编辑为“已解决”。相反,接受已发布的答案,或者如果没有,那么您可以自己写一个
-
*ptr++从指向的地址读取数据,然后递增指针。(*ptr)++递增指向的数据。一切如图。括号强制编译器将++增量应用于*ptr而不是ptr。
标签: c pointers dereference pointer-arithmetic