Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
可能重复: 在 C 数组中,为什么这是真的?a[5] == 5[a]
3["zdvnngfgnfg"];
相当于
"zdvnngfgnfg"[3];
这是合法的,意思是“获取该文字的地址并添加3*sizeof(char)到它”。反正不会有效果。
3*sizeof(char)
另请参阅这个非常相似的问题。
arr[i] 被解析为 *(arr+i),它可以写成 *(i+arr),因此 i[arr] 现在“strngjwdgd”是一个指向存储在只读位置的常量字符数组的指针。 所以它有效!
字符串字面量( array) 衰减为一个类型的指针char*。然后你取第四个元素:
array
char*
3["zdvnngfgnfg"] == "zdvnngfgnfg"[3]
为什么可以在数组前面写下标是另一个问题:
在 C 数组中,为什么这是真的?