字符数组的定义
用来存放字符数据的数组称为字符数组。字符数组中的一个元素存放一个字符。定义字符数组的方法与定义数值型数组的方法类似。
其定义的一般形式是:char 数组名[数据长度]
例如:
char c[10];
c[0]='I'; c[1]=' '; c[2]='l'; c[3]='o'; c[4]='v'; c[5]='e'; c[6]=' '; c[7]='y'; c[8]='o'; c[9]='u';
以上定义了c为字符数组,包含10个元素。
由于字符型数据是以整数形式(ASCII代码)存放的,因此也可以用整型数组来存放字符数据,例如:
int c[10];
但这时每个数组元素占2个字节的内存单元,浪费存储空间。1
字符数组也可以是二维或多维数组,例如:
char c[5][10];
即为二维字符数组。
字符数组的初始化字符数组的初始化与数值型数组初始化没有本质区别。但它除了可以逐个给数组元素赋予字符外,也可以直接用字符串对其初始化。
(1)用字符常量逐个初始化数组。例如:
char a[8]={'i','l','o','v','e','y','o','u'};
把8个字符依次分别赋给c[0]~c[7]这8个元素。
如果在定义字符数组时不进行初始化,则数组中各元素的值是不可预料的。如果花括号中提供的初值个数(即字符个数)大于数组长度,则出现语法错误。如果初值个数小于数组长度,则只将这些字符赋给数组中前面那些元素,其余的元素自动定为空字符(即'\0')。如果提供的初值个数与预定的数组长度相同,在定义时可以省略数组长度,系统会自动根据初值个数确定数组长度。例如:
char c[ ]={‘c’,‘ ’,‘p’,‘r’,‘o','g','r','a','m'};
这时c数组的长度自动定为9。
也可以定义和初始化一个二维字符数组,例如:
char diamond[5][5]={{' ',' ','#'},{' ','#',' ','#'},
{'#',' ',' ',' ','#'},{' ','#',' ','#'},{' ',' ','#'}};用它代表一个菱形的平面图形。
(2)字符串常量初始化数组。例如:
char c[ ]={‘c’,‘ ’,‘p’,‘r’,‘o','g','r','a','m'};
可写为:
char c[ ]={"C program"};
或去掉{}写为:
char c[ ]="C program";
注意:此时数组c的长度不是9,而是10。因为字符串常量的最后由系统加上一个'\0'。上面的初始化与下面的初始化等价。
char c[ ]={‘c’,‘ ’,‘p’,‘r’,‘o','g','r','a','m','\0'};1
字符数组中元素的引用可以通过引用字符数组中的一个元素,得到一个字符。
数组的引用形式为:
数组名[下标]
【例5-8】输入“I like playing basketball”并显示出来。
#include
int main(void)
{
char a[26]="I like playing basketball";
int i;
for(i=0;i