手撕指针第三章 | 字符串
以 0 作为终止符的 char 数组是应用最广泛的一种数组。 这是 C 语言存储字符串的最基本方式,因此我们常把以 0 作为终止符的 char 数组称为 C 风格字符串。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
int main() {
/* 下面这条语句把 msg 声明为一个指向字符的指针,并用字符串中第一个字符的地址对该指针进行初始化 */
char *msg = "Hello World!";
/*
与上述声明等价
char *msg;
msg = "Hello World!";
*/
printf("%s\n", msg); /* Hello World! */
printf("%c\n", *msg); /* H */
printf("%c\n", *(msg + 1)); /* e */
printf("%p\n", msg); /* 0x100de3f92 */
return 0;
}
这种类型的声明所面临的一个危险是你很容易误解他的意思。看上去初始值似乎是赋值给表达式
*msg,而事实上它是赋值给msg本身的。
C++ 字符串字面值常量沿用了这一传统,并且某些标准库函数也是建立在这一用法之上的。 通常情况下,char* 和 const char* 指向以 0 结尾的字符串序列。
This post is licensed under CC BY 4.0 by the author.