【发布时间】:2017-03-08 16:13:03
【问题描述】:
我遇到了下面的说法,脑洞大开。
++(*q)->len;
q 似乎是一个连续的内存数组,从外观上看,
似乎是指向structs 的指针数组;掌握一个新的
代码库,抱歉含糊不清。
有了上面的陈述,我们
取消引用q,获取作为指针的值,然后我们取消引用并访问字段len,然后我们递增?在代码中,我想说的是这个++((*q)->len),将是显式执行。
或者我应该将其阅读为,我们取消引用q,然后增加值,然后我们取消引用并获取struct 的len 字段,该字段在递增之前比q 早一个.同样,在代码中,我想说的是这个(++(*q))->len,将是显式执行。
任何指导都是伟大的
更新:
我猜第一个解析是有意义的++((*q)->len),就好像它是第二种情况一样,
我们会得到len 的值,然后什么也不做。
【问题讨论】:
-
++((*q)->len)); -
查看维基页面operator precedence
-
大声笑,请参阅更新。我终于到了那里……这是漫长的一天。
-
阅读How to Ask,提供minimal reproducible example,并去掉无关语言的标签。 C 和 C++ 是不同的语言。
-
C 优先顺序会让你/代码出错。建议按照@RyanMcCullagh 的建议添加另一组括号
标签: c pointers dereference