字符串的长相
"hello world!"!
这样一串**使得程序员诞生的代码**,就是字符串
字符串的特点
我么来看看它的特点,首先它拥有的不是一个元素,还有被双引号包裹着 没错,这种由双引号引起来的一串字符称为字符串字面值,或者简称**字符串**
注:字符串的结束标志是一个**\0的转义字符,在计算字符串长度的时候\0是结束标志,不算作字符串内容**
字符串的储存
c语言中没有专门存储字符串的类型 我们可以用字符数组来进行存储
#include <stdio.h>
int main()
{
char arr[] = "abcdef";
return 0;
}
我们用调试来观察一下它拥有几个元素 在调试监视中,我们可以看到这个数组拥有7个元素,包括\0,这说明字符串在结尾的时候隐藏了一个\0(\0是字符串的结束标志)
\0在字符串中的作用
通过printf来探查字符串中\0的作用
我们先创建两个字符数组 (""括起来的是字符串,’'括起来的是字符,%s表示的是打印字符串)
#include<stdio.h>
int main()
{
char arr1[] = { "hello world!\n" };
char arr2[] ={'h','e','l','l','o',' ','w','o','r','l','d','!','\n' };
printf("%s", arr1);
printf("%s", arr2);
return 0;
}
我们将程序执行起来发现
数组arr1打印出来正常,而**数组arr2打印出来的结果后面有一串乱码**
这是由于我们使用了%s进行打印,%s是用来打印字符串的,当我们打印字符串的时候,需要找到\0(字符串的结束标志),才会停止打印,而**arr2中没有\0,所以printf会一直往后面打印,直到找到\0为之**
通过strlen来探查字符串中\0的作用
我们对上面代码进行了改进
#include<stdio.h>
#include<string.h>
int main()
{
char arr1[] = { "hello world!\n" };
char arr2[] = { 'h','e','l','l','o',' ','w','o','r','l','d','!','\n' };
printf("%d\n", strlen(arr1));
printf("%d\n", strlen(arr2));
return 0;
}
打印出来的结果为13和46,arr2为随机值,这是因为arr2没有\0,所以一直读取字符直到读取到\0
|