字符数组
字符数组定义方式与整型数组类似,其语法格式如下:
char 数组名[数组大小]; //一维字符数组
在上述语法格式中,“char”表示数组中的元素是字符数据类型,“数组名”表示数组的名称,它的命名遵循标识符的命名规范,“数组大小”表示数组中最多可存放元素的个数。
定义字符数组的示例代码如下:
char ch[6];
上述代码定义了一个一维字符数组,数组名为ch,数组的长度为6,最多可以存放6个字符。字符数组的初始化和整型数组一样,可以在定义字符数组的时候完成,示例代码如下:
char c[5]={'h','e','l','l','o'};
上述代码的作用是定义了一个字符数组,数组名为c,数组包含5个字符类型的元素,该字符数组在内存中的状态如图1所示。
图1 字符数组c在内存中的状态
字符数组的访问方式与整型数组类似,都是通过索引实现的,例如访问上面定义的字符数组c中的元素,代码如下:
c[0]; //访问字符数组c中的第1个元素,值为h
c[1]; //访问字符数组c中的第2个元素,值为e
c[2]; //访问字符数组c中的第3个元素,值为l
脚下留心:字符数组初始化时注意事项
字符数组的初始化很简单,但是要注意以下几点:
(1)初始项不能多于字符数组的大小,否则编绎器会报错,提示初始值设定项太多。示例代码如下:
char str[2] = {'a', 'b', 'c'}; //错误写法
(2)如果初始项值少于数组长度,则空余元素均会被赋值为空字符(’\0’)。
str数组在内存中的表现如图8-2所示。
char str[5] = {'a', 'b', 'c'}; //后面剩余的两个元素均被赋值为'\0'
str数组在内存中的表现如图2所示。
图2 str数组在内存中的表现
(3)如果没有指定数组大小,则编绎器会根据初始项的个数为数组分配长度。
char str[] = {'a', 'b', 'c'}; //与char str[3] = {'a', 'b', 'c'};相同
(4)二维字符数组的初始化与整型二维数组类似。
char str[2][2] = {{'a', 'b'}, {'c', 'd'}};