【发布时间】:2016-04-21 01:18:55
【问题描述】:
这是我难以理解的代码:
char* myPtr = "example";
myPtr[1] = 'x';
如何允许我使用myPtr[1]?为什么我可以选择像 do on arrays 这样的位置? myPtr 甚至不是一个数组。
观察。我知道查找表、文字池和字符串文字,我关心的是它是如何编译的。我很少使用指针。
谁能帮忙?
【问题讨论】:
-
在现代 C++ 中实际上不允许这样做,其中字符文字为
const char *s。任何独立的现代 C++ 编译器都将拒绝编译此代码。但是,假设我们谈论的是const char *,数组实际上只是指向数组第一个元素的指针,所以数组和指针真的就像异卵双胞胎。 -
这很有帮助。谢谢。 :p
-
operator[]其实是指针操作,不是数组操作。它在数组上工作(或似乎工作)是数组到指针衰减的结果。 -
指针是不是数组。阅读comp.lang.c FAQ 的第 6 节。