字符数组定义
定义:字符数组也是数组,只是数组元素的类型为字符型,所有字符数组的定义与一般的数组类似,只是定义字符数组时类型说明符为char。字符串在printf中的格式控制符为%s,字符串可以由一串字符数组表示。
由(' ')引起的是一个字符
由(" ")引起的是一串字符
1.字符数组基本语句格式
char a[6];//定义具有6个数组元素的字符数组a,可以存放6个字符型数据。
2.字符数据的初始化
可以使用字符常量或相应的ASCII码值对字符数组进行初始化
char a[6]={'h','e','l','l','o','!'};
功能是把6个字符逐个赋给数组中的各元素。初始化后如下
a[0] a[1] a[2] a[3] a[4] a[5]
h e l l o ! 意义:在内存中开辟6个空间,分别将6个字符放入内存空间中。
3.字符数组与字符串
1.定义:c语言中没有存放字符串的变量,所以通常用一个字符串数组来表达字符串,字符串是由一对双引号("")括起来的字符序列,
char a[] = "a" //字符串 占用两个空间
char a[] = 'a' //字符 占用1个空间
char a[6]="hello";
c语言中规定,自动在字符串的结尾加一个字符串结束标志$\0$,以便系统据此判断字符串是否结束。因此字符和字符串两者不一样.(字符串可以由字符组成)
例:(当[]括号内没有定义最大容量时,系统会根据后面的字符串自动初始化,最后自动加\0结束)
char a[] = "love"; //末尾自带一个\0
char a[] = {'l','o','v','e'}; //字符常量末尾不会自动加\0,所以中间打印的时候会出现随机值
char a[] = {'l','o','v','e','\0'};//正常打印,因为末尾加了\0
在字符数组中可以不带大括号。
3.用字符串方式赋值比用字符逐个赋值要多占一个字节,这个字节用于存放字符串结束标志$\0$,情况如下
char a[] = "love";
a[0] a[1] a[2] a[3] a[4]
l o v e \0
4.字符数组关于字符元素小于最大容量情况时补\0的情况
char a[5] = "love";
char a[7] = "love";
①其中字符数组中的元素只有love,但是最大容量定义的是5,所以会在最后一个空间中补\0
②定义最大容量为7,而字符串数组中只有四个字符,剩下3个空间全部补\0.