二维字符数组一般用于存储和处理多个字符串,二维字符数组中的每一行均可存储表示一个字符串。

二维字符数组的定义

二维字符数组的定义格式为:

char 数组名[第一维大小][第二维大小];

如:

  1. char c[3][10]; //定义了一个3行10列的二维字符数组c

二维字符数组的初始化

通常情况下,二维数组的每一行分别使用一个字符串进行初始化。 例如:

 
  1. char c[3][8]={{"apple"},{"orange"},{"banana"}};

等价于:

 
  1. char c[3][8]={"apple","orange","banana"};

以上两条初始化语句中,二维数组的第一维大小均可省略。数组 c 的逻辑结构如下所示:
 

 01234567
c[0]apple\0\0\0
c[1]orange\0\0
c[2]banana\0\0

 

由于该二维数组的每一行 c[0]、c[1]、c[2] 均是含有 10 个元素的一维字符数组,即二维数组的每一行均可表示一个字符串。

二维字符教组的引用

可以使用行下标和列下标引用二维字符数组中的每个元素(字符),例如:

 
  1. char c[][10]={"apple","orange","banana"};


以下均是对二维字符数组元素的合法引用:

 
  1. printf ("%c",c[1][4]); //输出1行4列元素'g'字符
  2. scanf ("%c",&c[2][3]); //输入一个字符到2行3列元素中
  3. c[2][0]='B'; //把字符赋值给2行0列元素
  4. printf ("%s",c[1]); //c[1]为第2行的数组名(首元素地址),输出 orange
  5. scanf ("%s",c[2]); //输入字符串到c[2]行,从c[2]行的首地址开始存放


以下是对二维字符数组元素的非法引用:

c[0][0]="A"; //行、列下标表示的为字符型元素,不能使用字符串赋值
printf ("%c",c[2]); //c[2]为第3行的首地址,不是字符元素,故不能用%c

 

【例 1】 分析以下程序,输出其运行结果。

#include<stdio.h>
int main (void){
char c[3][5] = {"Apple","Orange","Pear"};
int i;
for(i=0;i<3;i++)
printf ("%s\n",c[i]);
return 0;}
该数组各元素中的值如下所示。

 01234
c[0]Apple
c[1]Orang
c[2]Pear\0

 

 
  1. printf ("%s\n",c[0]); //输出AppleOrangPear
  2. printf ("%s\n",c[1]); //输出OrangPear
  3. printf ("%s\n",c[2]); // Pear

运行结果为:
AppleOrangPear
OrangPear
Pear

 

(来源自c语言中文网)http://c.biancheng.net/view/273.html

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐