[英]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.