2014-09-21 85 views
1

由Mike Banahan (Link: Section 2.8.1.5)在C中,“字符串”[4]的意思和含义是什么?

我明白"a string"降低的指针,其在某处存储在存储器中该字符串的第一个字符从C本书采取以下。但我对"a string"[4]毫无头绪,本书给出的内容对我来说有点不清楚。

当字符串有9个字符时,尺寸是4还是4​​?除此之外,"a string"[0]会将第一个字符"a string"[2]指向第三个字符,依此类推?如果不是的话,你能否简单地解释一下这本书的语法意味着什么?

其的杀了我的线是“在一个 表达式,其类型是炭和它的值是字母‘R’的内部 表示第一结果”。 'r'在哪里进来?

下面是这本书所采取的文字:

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

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

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

注意:请忽略宽字符部分的内容,因为我认为这并不相关。谢谢。

回答

5

可以拼出"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 
+0

是的...更清晰。 – Thokchom 2014-09-21 06:42:07

+2

@ Thokchom:考虑接受答案。 – 2014-09-21 06:45:31

+0

@PavelŠimerda完成。实际上,在接受答案为最好之前,我默认等待几个小时。就这样,你永远不知道什么时候NPE的其他人能够得到比已经完美的答案更好的答案:-) – Thokchom 2014-09-21 14:41:28

1

的字符串文字"a string"意味着它是一个指针串"a string"的第一个字符。 C允许指针被下标,所以字符串文字可以被下标。

因此"a string"[4]会给5 th字符r

+0

+1。谢谢.. – Thokchom 2014-09-21 14:42:11

相关问题