为什么这个代码片段可以在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++