终于到了!字符串!还能更简单吗?
实际上,字符串在 C 语言中并不是真正的字符串。没错!它们是指针!当然是指针!
就像数组一样,C 语言中的字符串几乎是不存在的。
但我们来看看——这其实没什么大不了的。
在开始之前,我们先来谈谈 C 语言中的字符串字面量。这些是用双引号(")括起来的字符序列。(单引号用于括起单个字符,完全是另一回事。)
示例:
"Hello, world!\\n"
"This is a test."
"When asked if this string had quotes in it, she replied, \\"It does.\\""
第一个字符串结尾有一个换行符——这是很常见的情况。
最后一个字符串中嵌入了引号,但你会看到每个引号前都有一个反斜杠(\),我们称之为“转义”。它表示这个字面量中的引号是字符串的一部分。C 编译器通过这种方式区分打印双引号字符和字符串结束的双引号。
现在我们知道了如何创建字符串字面量,接下来把它赋值给一个变量,这样我们就能对它进行操作了。
char *s = "Hello, world!";
注意这个变量的类型:指向 char 的指针。字符串变量 s 实际上是一个指向该字符串第一个字符的指针,也就是字符 H。
我们可以用 %s(表示“字符串”)格式说明符来打印它:
char *s = "Hello, world!";
printf("%s\\n", s); // 输出 "Hello, world!"
另一种选择是,几乎等同于上面 char* 用法的写法:
char s[14] = "Hello, world!";
// 或者,如果我们足够懒,让编译器帮我们计算长度的话:
char s[] = "Hello, world!";
这意味着你可以使用数组符号来访问字符串中的字符。我们就来这样做,打印字符串中的所有字符,并排显示: