文字字符串索引标准C?

ste*_*fen 3 c string indexing

我偶然发现包含以下内容的代码:

char c = "abc"[1];
Run Code Online (Sandbox Code Playgroud)

它用gcc编译并运行良好!c将'b'在此表达之后.

这个标准是索引文字字符串还是它运气好吗?

oua*_*uah 7

当然是,字符串文字是数组类型.它被转换为char表达式中的指针,就像任何指针一样char.

char c = "abc"[1];
Run Code Online (Sandbox Code Playgroud)

和

char *p = "abc";
char c = p[1];
Run Code Online (Sandbox Code Playgroud)

是等价的.

  • @TomTanner字符串文字在C++中是`const char [n + 1]`但在C中它们是`char [n + 1]`并且必须是不可修改的.这是出于历史原因. (2认同)