5

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

3["zdvnngfgnfg"];

4

3 回答 3

8

相当于

"zdvnngfgnfg"[3];

这是合法的,意思是“获取该文字的地址并添加3*sizeof(char)到它”。反正不会有效果。

另请参阅这个非常相似的问题。

于 2009-09-21T09:45:37.803 回答
6

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

于 2009-09-21T09:48:02.547 回答
2

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

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

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

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

于 2009-09-21T09:49:11.123 回答