C编程从入门到实践
上QQ阅读APP看书,第一时间看更新

8.3.1 字符数组

不管字符数组中存放的是字符串还是若干个字符,每个字符数组元素都可以作为一个字符型变量来使用,处理方法和前面介绍的普通一维数组的相同。但是,存放字符串的字符数组还有一些特殊用法。

字符数组是存储字符型数据的,应定义成“字符型”。由于整型数组元素可以存放字符,所以整型数组也可以用来存放字符型数据。字符数组的定义格式如下所示。

    存储类型char数组名[长度1][长度2]...[长度k]={{初值表}, ...}

上述格式的功能是,定义一个字符型的k维数组,并且对其赋初值。字符型数组赋初值的方法和前面介绍的一般数组赋初值的方法完全相同。“初值表”是用逗号分隔的字符常量,请看下面的例子。

    char s1[3]={'1', '2', '3'};                    /*逐个元素赋初值*/

经过上述定义后结果是:s1[0]='1',s1[1]='2',s1[2]='3':

    char s2[]={'1', '2', '3'}; /*若对所有元素赋初值可省略数组长度*/

经过上述定义后结果是:s2[0]='1',s2[1]='2',s2[2]='3':

    char s3[3]={'1', '2'};                         /*自动型,不赋初值的元素值为空字符*/

经过上述定义后结果是:s3[0]="1',s3[1]='2',s3[2]为空字符。注意,因为空字符的值是0,等于字符串的结束标记’\0',所以字符数组s3中实际存放的是一个字符串。

    static char s4[3]={'1', '2'};                 /*静态型,不赋初值的元素为空字符*/

经过上述定义后结果是:s4[0]值为’1',s4[1]值为’2',s4[2]值为空字符。由于空字符的值是0,等于字符串的结束标记’\0',所以字符数组s4中实际存放的是一个字符串。

    char s5[3]=['1', '2', '\0'};

经过上述定义后结果是:s5[0]值为’1',s5[1]值为’2',s5[2]值为’\0'。由于最后一个字符是字符串的结束标记符’\0',所以字符数组s5中实际存放的是一个字符串。

字符数组的处理和其他数组类型的处理方法类似,需要注意的是其元素相当于字符型变量。