C*运算符在数组赋值中的含义

big*_*ben 1 c arrays pointers variable-assignment

这条线是什么意思?几年后我没有做过C.它是否在parens中执行操作然后使int结果成为指针?

b[0] = *(start + pos++);
Run Code Online (Sandbox Code Playgroud)

AnT*_*AnT 8

显然start是一个指针(或数组,无论如何都将衰减到指针),这意味着表达式的结果()是一个指针,而不是一个指针int.在*简单的解引用指针.

整个事情相当于简单b[0] = start[pos++],但由于某种原因,有些人更喜欢使用模糊的形式,如你的帖子.

  • 好吧,我赞成你,但我对"混淆"的评论感到不满.如果你只保留三个冗余结构中的两个:`p [e]`,`*p`和`p + e`,那么通过保留后两个来获得最清晰的程序(但我可能是部分的,在C静态分析器上工作,它的第一个转换是将程序中的所有`p [e]`变成'*(p + e)`以限制要研究的结构数量). (2认同)

Fru*_*nsi 5

假设start是指针而pos是一个整数,它可以很容易地重写为:

b[0] = start[pos++];
Run Code Online (Sandbox Code Playgroud)

希望这有助于您理解.