我对我正在阅读的书中的这个片段感到困惑。文本字符串放入char
数组中。有四个单词,数组中有四个元素。等等,但这意味着单个char
元素包含整个文本字符串。我确定chars
只能处理一个字符。这是代码。
const char *words[4] = { "aardvark", "abacus",
"allude", "zygote" };
那是什么给出的?作者如何使用chars
存储整个字符串?我知道解决方案必须非常明显,但我无法看到它。另外,const
关键字的含义是什么?为什么只有在我们计划对这个数组做的所有事情都使用strlen()
计算每个单词的长度时才需要读取它?
答案 0 :(得分:7)
代码不使用字符来存储字符串,请注意声明是 char *
的数组。
char
可以包含单个字符,char *
可以用于指向字符数组的第一个元素,它可以包含标准C字符串。这是一个重要的C基础:看一个char *
,你应该立即想到以null结尾的C字符串。
同样,通过在数组中保存 first int *
的地址,可以使用int
来引用整个int
数组。 int*
的订阅方式与使用[]
声明的数组相同。
char *
也可以用来简单地保存单个字符的地址 - 即不是空终止字符串中的第一个字符。
答案 1 :(得分:3)
他不能。 You notice the asterisk, right?作者如何使用字符存储整个字符串?
答案 2 :(得分:3)
您遗漏的是*
。
char letter = 'a'; //stores a single character
char *word = "bigger"; //stores a string literal
这意味着这个词真的是:
word ---> [b][i][g][g][e][r][\0]
指向一堆字符(或字符串“字符串”)。在您的示例中,作者定义了:
const char *words[4] = { "aardvark", "abacus", "allude", "zygote" };
所以你有4个字符串,它们是常量。 const是作者选择在那里添加它...它可能已被取消。这只是一个安全措施,是对编译器(和作者)的一个注意事项,即这些值无法修改。