什么是字符串?
在C语言中使⽤双引号括起来的⼀串字符就被称为字符串,如:"abcd",就是⼀个
字符串。
字符串的打印格式可以使⽤
%s
来指定,也可以直接打印
#include <stdio.h>
int main()
{
printf("%s\n", "hello");
printf("hello ");
return 0;
}
\0是什么?
C语⾔字符串中⼀个特殊的知识,就是在字符串的末尾隐藏放着⼀个
\0
字符,这个
\0
字符是字符串
的结束标志。
对于字符串"abcdef",我们实际上看到了6个字符:a,b,c,d,e,f,但是实际上在末尾还隐藏⼀个
\0
的
转义字符,
\0
是字符串的结束标志。所以我们在使⽤库函数
printf()
打印字符串或者
strlen()
计算字符串⻓度的时候,遇到
\0
的时候就⾃动停⽌了。
验证
#include <stdio.h>
int main() {
char arr[] = "abc";//arr中存放字符串
char arr1[] = { 'a','b','c' };//arr1中存放3个字符
printf("%s\n%s", arr, arr1);
}
我们可以看到
arr
的打印就是完全正常
的,就是因为
arr
数组是使⽤字符串常量初始化的,数组中有
\0
作为技术标志,打印可以正常停⽌。
arr1
字符数组在打印的时候,打印了
a
、
b
、
c
后还打印了⼀些随机值,这就是
因为
arr1
在末尾的地⽅没有
\0
字符作为结束标志,在打印的时候没有停⽌。
如果我们在arr1数组中单独放⼀个 '\0' 字符会怎么样呢?
#include <stdio.h>
int main() {
char arr[] = "abc";
char arr1[] = { 'a','b','c','\0'};
printf("%s\n%s", arr, arr1);
printf("%s\n", "abc\0def");
}
看到三次打印的结果是⼀样的了,都是打印到 \0 的时候就停⽌了,那从上述的例⼦我们确实能够观察到 \0 的作⽤和重要性的。
以上就是C语言中字符串与\0的关系了。