繁体   English   中英

在C语言中,“字符串” [4]这样的含义和含义是什么?

[英]In C, what exactly does something like “a string”[4] mean and signify?

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

我了解"a string"简化为指向存储在内存中某个位置的该字符串的第一个字符的指针。 但是我对"a string"[4]一无所知"a string"[4] ,书中给出的内容对我来说还不太清楚。

当字符串有9个字符时,大小如何为4? 除此之外, "a string"[0]是指第一个字符, "a string"[2]是第三个字符,依此类推吗? 如果没有,您能否用简单的术语来解释这本书的语法是什么意思?

杀死我的那一行是“第一个结果产生一个 表达式,其类型为char并且其值是 字母'r' 的内部 表示形式” “ r”从哪里来?

这是那本书的摘录:

字符串被实现为数组,尽管看起来可能很奇怪,但是完全可以在它们上使用数组索引:

 -  "a string"[4]
 -   L"a string"[4]

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

注意:请忽略宽字符部分的内容,因为我认为这无关紧要。 谢谢。

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

char *s = "a string";
char ch = s[4];

它使事情更清楚了吗?

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

字符串文字"a string"表示它是指向字符串"a string" 的第一个字符指针 C允许对指针进行下标,因此可以对字符串文字进行下标。

因此, "a string"[4]将给出第5 字符r

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM