为什么这个片段在C中可编辑?

时间:2009-09-21 09:44:45

标签: c++ c arrays declaration

  

可能重复:
  In C arrays why is this true? a[5] == 5[a]

3 [ “zdvnngfgnfg”];

3 个答案:

答案 0 :(得分:8)

相当于

"zdvnngfgnfg"[3];

这是合法的,意思是“获取该文字的地址并向其添加3*sizeof(char)”。无论如何都没有效果。

另见this非常相似的问题。

答案 1 :(得分:6)

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

答案 2 :(得分:2)

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

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

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

In C arrays why is this true?