C語言-15:多維數組與指針

C語言指針數組的關係密不可分,同時C語言規定多維數組名也是一個指針,例如二維數組a[3][5],a[3]便是一個指針。那這又有怎樣的應用呢?

C語言-15:多維數組與指針

C-Free

例:

1、打開C-Free,新建文件。

2

輸入以下內容:

#include

main()

{

char stu[4][4][10];

int i,j;

printf("請輸入4個項目");

for(j=0;j<4;j++){

printf("項目%d:",j+1);

scanf("%s",stu[0][j]);

}

printf("請輸入3個%s",stu[0][0]);

for(j=1;j<4;j++){

printf("第%d個%s:",j,stu[0][0]);

scanf("%s",stu[j][0]);

}

for(i=1;i<4;i++)

for(j=1;j<4;j++){

printf("請輸入%s的%s:",stu[i][0],stu[0][j]);

scanf("%s",stu[i][j]);

}

printf("情況如下:");

for(i=0;i<4;i++){

for(j=0;j<4;j++)printf(" %s",stu[i][j]);

printf("");

}

}

3

運行結果如圖:

說明:

char stu[4][4][10];這裏定義了一個三維的字符數組總共有4x4x10個元素,但是例中,最後一維即[10]是用來儲存字符串的,因此一共有4x4個項目。

1【C語言-12】多個數據的統一化處理(數組)1【C語言-13】字符數組

在開始便提到過,對於二維數組a[3][5],a[3]是一個指針,因此stu[0][j]也是一個指針。

0【C語言-14】數據的門牌號——指針

我們還記得scanf函數裏有一個&,這個&便是取地址的意識,故在scanf("%s",&word);中&word是個地址,因此當後面的變量本身就是一個指針時,便不需要加&了,如例中:scanf("%s",stu[0][j]); 便沒有加&。

注意:在數組中,字符串是不可以存儲到一個變量中的,字符串始終是以數組的`形式儲存的,如以前提到過的

char word[10];

scanf("%s",&word); //見《【C語言-02】向系統輸入內容文字(字符串)》

這個word其實就是一個數組。

0【C語言-02】向系統輸入內容文字(字符串)

因此像例中一樣,要輸出一個二維的帶字符串的項目,必須定義3維數組,如圖: