char 数组名[第一维大小][第二维大小];
如:char c[3][10]; //定义了一个3行10列的二维字符数组c由于该二维数组的每一行 c[0]、c[1]、c[2] 均是含有 10 个元素的一维字符数组,即二维数组的每一行均可表示一个字符串。
char c[3][8]={{"apple"},{"orange"},{"banana"}};等价于:
char c[3][8]={"apple","orange","banana"};以上两条初始化语句中,二维数组的第一维大小均可省略。数组 c 的逻辑结构如下所示:
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | |
---|---|---|---|---|---|---|---|---|
c[0] | a | p | p | l | e | \0 | \0 | \0 |
c[1] | o | r | a | n | g | e | \0 | \0 |
c[2] | b | a | n | a | n | a | \0 | \0 |
char c[][10]={"apple","orange","banana"};
printf ("%c",c[1][4]); //输出1行4列元素'g'字符 scanf ("%c",&c[2][3]); //输入一个字符到2行3列元素中 c[2][0]='B'; //把字符赋值给2行0列元素 printf ("%s",c[1]); //c[1]为第2行的数组名(首元素地址),输出 orange scanf ("%s",c[2]); //输入字符串到c[2]行,从c[2]行的首地址开始存放
c[0][0]="A"; //行、列下标表示的为字符型元素,不能使用字符串赋值
printf ("%c",c[2]); //c[2]为第3行的首地址,不是字符元素,故不能用%c
#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; }分析:本题主要考查二维数组的逻辑结构和存储结构的区别。二维数组在逻辑上是分行分列的,但其存储结构却是连续的。
0 | 1 | 2 | 3 | 4 | |
---|---|---|---|---|---|
c[0] | A | p | p | l | e |
c[1] | O | r | a | n | g |
c[2] | P | e | a | r | \0 |
printf ("%s\n",c[0]); //输出AppleOrangPear printf ("%s\n",c[1]); //输出OrangPear printf ("%s\n",c[2]); // Pear运行结果为:
Copyright © 广州京杭网络科技有限公司 2005-2025 版权所有 粤ICP备16019765号
广州京杭网络科技有限公司 版权所有