6.3 字符数组-1
一.字符数组的定义方式
字符数组:用来存放字符数据的数组。字符数组中的一个元素存放一个字符;
char c[10]; //c[0]...c[9]
c[0] = 'I';
c[1] = '';
c[2] = 'a';
c[3] = 'm';
c[4] = '';
c[5] = 'h';
c[6] = 'a';
c[7] = 'p';
c[8] = 'p';
c[9] = 'y';
二.字符数组的初始化
1.逐个字符赋给数组中的元素
char c[10] = {'I', '' , 'a' , 'm' , '' , 'h' ,'a', 'p', 'p', 'y'}; //c[0]...c[9]
2.提供的初值个数和预定的数组长度相同
如果提供的初值个数和预定的数组长度相同,定义时可以省略数组长度,系统会自动根据初值个数确定数组长度。
char c[] = {'I', '' , 'a' , 'm' , '' , 'h' ,'a', 'p', 'p', 'y'}; //c[0]...c[9]
3.初值个数 > 数组长度
初值个数 > 数组长度 ,则提示语法错误
char c[8] = {'I', '' , 'a' , 'm' , '' , 'h' ,'a', 'p', 'p', 'y'}; //c[0]...c[9]
4.初值个数 < 数组长度
初值个数 < 数组长度,则只将这些字符赋值给数组中前面的那些元素,其余的元素值可能会给\0,也可能无法确定,所以不建议使用
char c[12] = {'I', '' , 'a' , 'm' , '' , 'h' ,'a', 'p', 'p', 'y'}; //c[0]...c[9]
上述初始化相当于
char[10] = 0; //0 = '0'
char[11] = 0; //清零
三.二维数组的引用
char diamond[3][3] = { {'' ,'*', ''}, {'*' , '' , '*'}, {'' ,'*', ''}};
四.字符串和字符串结束标记(重点)
如果提供的初值个数和预定的数组长度相同,定义时可以省略数组长度,系统会自动根据初值个数确定数组长度。
char c[] = {'I', '' , 'a' , 'm' , '' , 'h' ,'a', 'p', 'p', 'y'}; //c[0]...c[9]
补充一个初始化字符数组的方法:用字符串来初始化字符数组
char d[] = {"I am happy"}; //系统会自动在字符串末尾增加一个 \0,叫做字符串结束标记
//11个元素,c[0]...c[10]
//字符串结束标记,用来标记一个字符串的结束。
//为了测定一个字符串的实际长度,c语言规定了一个字符串结束标记,就是这个\0。
//如果一个字符串,他的第10个字符为'\0',则此字符串的有效字符为9个。
//也就是说,在遇到字符'\0'的时候,表示字符串结束,由'\0'前边的字符组成字符串。
//这个"I am happy"有10个有效字符,但是他在内存中占11个字节,因为最后一个字节放的是'\0'。
char c[] = {'I', '' , 'a' , 'm' , '' , 'h' ,'a', 'p', 'p', 'y'};
char d[] = {"I am happy"};
两者不等价
char c[] = {'I', '' , 'a' , 'm' , '' , 'h' ,'a', 'p', 'p', 'y' , '\0'}; //这种赋值方法罕见
char d[] = {"I am happy"};
两者等价