在 C 语言中,字符串实际上是使用空字符 \0 结尾的一维字符数组。因此,\0 是用于标记字符串的结束。
空字符(Null character)又称结束符,缩写 NUL,是一个数值为 0 的控制字符,\0 是转义字符,意思是告诉编译器,这不是字符 0,而是空字符。
本节涉及函数英文全称
strcmp: string compare
strcat: string catenate
strcpy: string copy
strlen: string length
strlwr: string lowercase
strupr: string upercase
字符串在以如下输入进行初始化的时候需要对 \0 特别注意:
char greeting[6] = {'H', 'e', 'l', 'l', 'o', '\0'};
如果没有在字符数组最后增加 \0 的话输出结果有误:
// 初始化字符串
char greeting[5] = { 'H', 'e', 'l', 'l', 'o' };
printf("Greeting message: %s\n", greeting);
输出结果:
Greeting message: Hello烫烫烫?侵7(?╔?╚╔╔
在使用不定长数组初始化字符串时默认结尾为 \0
char greeting[] = "Hello";
printf("Greeting message: %s, greeting[] Length: %d\n", greeting, sizeof(greeting));
输出结果:
Greeting message: Hello, greeting[] Length: 6
结论:需在给定字符数组的大小时在原有的字符串的字符数上加 1。
strlen 与 sizeof的区别:
strlen 是函数,sizeof 是运算操作符,二者得到的结果类型为 size_t,即 unsigned int 类型。
sizeof 计算的是变量的大小,不受字符 \0 影响;
而 strlen 计算的是字符串的长度,以 \0 作为长度判定依据。
'a' 表示是一个字符,"a" 表示一个字符串相当于 'a'+'\0';
'' 里面只能放一个字符;
"" 里面表示是字符串系统自动会在串末尾补一个 0。
1、字符串的本质是以 \0 结束的字符数组。
2、字符串的字面量是常量,比如"hello world"。
3、字符串的定义与初始化。
字符数组:
数组形式
char hi[] = {'h','e','l','l','o','\0'};
直接赋首地址:
char hi[50] ="hello" ;
省略长度
char hi[] = "hello";
char hi[] = { "hello" };
字符指针:(注意指针不能直接赋给数组)
char *hi = "hello";