四、字符数组
(1)字符数组的定义
有一定顺序关系的若干个字符型变量的集合,就是字符数组。可以是一维数组,也可以是二维数组。
定义形式:
char ch[5];
char ch[2][3];
(2)字符数组初始化
***和普通数组的初始化相同,逐个为数组元素赋值。
char ch[6] = { 'a' , 'b', 'c' , '1' , '2' , '3' };
char ch[][3] = { { 'a' , 'b' , 'c' } , { '1' , '2' , '3' } };
***使用字符串常量来对字符数组进行初始化。
char ch[6] = " abcde ";
char ch[] = " abcde ";
相当于: char ch[6] = { 'a' , 'b', 'c' , 'd' , 'e' , '\0' };
五、字符串
(1)字符串的定义
字符串指的是以“\0”作为结束字符的一组字符,在C语言中没有专门的字符串常量,通常用一个字符数组来存放一个字符串。因此当把一个字符串存入一个数组时,也把字符串的结束符"\0"存入数组,并以此作为字符串是否结束的标志。
char ch[] = " apple ";
相当于:char ch[] = { 'a' , 'p' , 'p' , 'l' , 'e' ,'\0' };
用字符串方式对字符数组初始化时,比用字符逐个初始化要多占用一个字节,用于存放字符串结束标志"\0"。
“\0”是由C编译系统自动加上去的。由于使用了“\0”标志,所以在用字符串进行初始化时,经常省略数组的长度。
(2)字符串的输入输出
使用格式化符号"%s",来表示处理的是字符串。
scanf的各输入项必须以地址方式出现,如&a,&b。但是由于数组名就代表了数组的首元素地址,所以只需要写数组名即可,不用加取地址符”&”。
用scanf函数输入字符串时,是以空格作为字符串的结束,因此,若输入字符串中有空格,则空格后面的字符串奖不存到数组中。