在C中,究竟是什么类似"字符串"[4]的意思和意义?

Tho*_*hom 1 c arrays string indexing

以下内容摘自Mike Banahan的C书(链接:第2.8.1.5节)

据我所知,"a string"缩减为指向该字符串的第一个字符的指针,该字符串存储在内存中的某处.但我一无所知"a string"[4],书中给出的内容对我来说有点不清楚.

当字符串有9个字符时,大小如何为4?除此之外,会"a string"[0]引用第一个字符,"a string"[2]第三个字符,依此类推?如果没有,请您简单解释一下这本书的语法意味着什么?

杀死我的行是"第一个导致 表达式,其类型为char,其值是 字母'r' 的内部表示".'r'在哪里进来?

这是从那本书中取出的文字:

字符串是作为数组实现的,尽管它可能看起来很奇怪,但完全允许对它们使用数组索引:

 -  "a string"[4]
 -   L"a string"[4]
Run Code Online (Sandbox Code Playgroud)

都是有效的表达.第一个结果是一个表达式,其类型为char,其值是字母'r'的内部表示(记住数组索引从零开始,而不是一个).第二个类型为wchar_t,并且还具有字母"r"的内部表示形式的值.

注意:请忽略广泛角色部分的内容,因为我觉得这不相关.谢谢.

NPE*_*NPE 5

您可以拼写"a string"[4]如下:

char *s = "a string";
char ch = s[4];
Run Code Online (Sandbox Code Playgroud)

这会让事情更清楚吗?

s[0]: a
s[1]:  
s[2]: s
s[3]: t
s[4]: r
s[5]: i
s[6]: n
s[7]: g
s[8]: \0
Run Code Online (Sandbox Code Playgroud)

  • @Thokchom:考虑接受答案. (2认同)