为什么这个代码片段可以在C中编译?

可能重复:
在C数组中,为什么这是真的? a [5] == 5 [a]

3 [ “zdvnngfgnfg”];


这相当于

"zdvnngfgnfg"[3];

这是合法的,并且意味着“采用该文字的地址并向其添加3*sizeof(char) ”。 反正无效。

也看到这个非常类似的问题。


arr [i]被解析为*(arr + i),它可以被写为*(i + arr),因此i [arr]
现在“strngjwdgd”是一个指向存储在只读位置的常量字符数组的指针。
所以它的作品!


字符串文字( array )衰变为char*类型的指针。 然后你拿第四个元素:

3["zdvnngfgnfg"] == "zdvnngfgnfg"[3]

为什么你可以写数组的下标是另一个问题:

在C数组中,为什么这是真的?

链接地址: http://www.djcxy.com/p/86719.html

上一篇: Why is this snippet compilable in C?

下一篇: array] in the C++