首页 理论教育 C语言程序设计:字符型数组的定义

C语言程序设计:字符型数组的定义

时间:2023-10-29 理论教育 版权反馈
【摘要】:字符型数组定义的方法与前面介绍的数组定义方法一样。由于字符型和整型可以通用,所以,也可以定义一个整型数组“int c[5]”,用来存放字符型数据,但这时每个数组元素占4个字节的内存单元,浪费存储空间。加上空格和标点符号共有15个字符,但在内存中占16个字节,最后一个字节′\0′是系统自动加上的。可以说,有了结束标志′\0′后,字符数组的长度就显得不那么重要了,系统可以通过检测′\0′来判定字符串是否结束。

C语言程序设计:字符型数组的定义

字符数组定义的一般形式:

char数组名[常量表达式1][常量表达式2]…[常量表达式n]

例如:

char a[5],b[3][5];

定义了一个一维的字符型数组a,数组a有5个char元素,分别是a[0],a[1],a[2],a[3],a[4],可以存储5个字符型的数据。还定义了一个二维的字符型数组b,它有3×5个char元素。

字符型数组定义的方法与前面介绍的数组定义方法一样。字符型数组也分为一维字符型数组和多维字符型数组。一维字符数组常常存放一个字符串;二维字符数组常用于存放多个字符串,可以看作是一维字符串数组。

由于字符型和整型可以通用,所以,也可以定义一个整型数组“int c[5]”,用来存放字符型数据,但这时每个数组元素占4个字节的内存单元,浪费存储空间。

在C语言中,字符型变量只能存放一个字符,而实际上经常用到的是字符串,字符串是作为字符型数组来处理的。数组的处理与循环是密不可分的,要想知道循环的次数就必须知道数组的长度,字符型数组也不例外,只不过在实际生活中,字符型数组的长度与字符串的实际长度有时是不相等的,而我们更关心的是字符串的实际长度。所以C语言规定了一个“字符串结束标志”——′\0′(ASCII码为0的空字符),存储一个字符串时总是在字符串后面自动加上一个′\0′,表示该字符串结束,该字符串就是由′\0′前面的字符组成的。

例如:

char c[5]={′c′,′h′,′i′,′n′,′a′};

没有′\0′,在输出时就得用下面的for语句:

for(i=0;i<5;i++)

 printf("%c",c[i]);(www.xing528.com)

如果是

char c[10]={′c′,′h′,′i′,′n′,′a′,′\0′};

就可以直接用printf函数和后面要讲到的格式符“%s”来输出:

printf("%s",c);

不输出′\0′,遇到′\0′仅表示字符串结束。

“printf("%s",c);”与下面的程序段效果一样:

i=0;

while(c[i]!=′\0′)

 putchar(c[i++]);

对于字符串常量,系统会自动地加一个′\0′作为结束符。比如:“hello everyone!”加上空格和标点符号共有15个字符,但在内存中占16个字节,最后一个字节′\0′是系统自动加上的。可以说,有了结束标志′\0′后,字符数组的长度就显得不那么重要了,系统可以通过检测′\0′来判定字符串是否结束。但是,在定义字符数组的时候,还应该估计字符串的实际长度,保证数组长度始终大于字符串的实际长度。

需要说明的是,字符数组并不要求它的最后一个字符为′\0′,甚至可以不包括′\0′,像上面的例子,“char c[5]={′c′,′h′,′i′,′n′,′a′};”是完全合法的,只是这种形式的数组只能用for循环来输出,而不能用格式符“%s”的形式输出。是否需要加′\0′,完全根据需要决定,但是由于系统对字符串常量会自动加一个′\0′,因此,为了使处理方法一致,在字符数组中也常常会人为地加上一个′\0′,这样便于在程序中做相应的处理。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈