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 | |||
c[1] | o | r | a | n | g | e | ||
c[2] | b | a | n | a | n | a |
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 ("%sn",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 |
printf ("%sn",c[0]); //輸出AppleOrangPear printf ("%sn",c[1]); //輸出OrangPear printf ("%sn",c[2]); // Pear執行結果為: