C語言-----二維陣列
阿新 • • 發佈:2018-11-09
二維陣列的建立,初始化,使用。
(一)二維陣列的建立
二維陣列定義的一般形式:型別說明符 陣列名[常量表達式][常量表達式]
舉例如下:
int a[3][4];
//定義a為 3*4(3行4列) 的陣列。
二位陣列又可以看作是一種特殊的一維陣列:它的元素又是一個一維陣列。
舉例如下:
int a[3][4]; //可以看作a是一個一維陣列,它有3個元素:a[0],a[1],a[2]。 //每個元素又是一個包含四個元素的一維陣列。此時a[0],a[1],a[2]做一維陣列名。 //a[0]——a[0][0],a[0][1],a[0][2],a[0][3] //a[1]——a[1][0],a[1][1],a[1][2],a[1][3] //a[2]——a[2][0],a[2][1],a[2][2],a[2][3]
二維陣列中元素在記憶體中是連續存放的,元素的排列順序是按行排放的,即izai記憶體中先存放第一行的元素,緊接著存放第二行的元素,以此類推…是線性的,不是二維的。
(二)二維陣列的初始化
int a[3][4] = { { 1, 2, 3, 4 }, { 5, 6, 7, 8 }, { 9, 10, 11, 12 } }; int a[3][4] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 }; //這兩行程式碼等價 //結果為:1 2 3 4 // 5 6 7 8 // 9 10 11 12 //第1行程式碼是分行給二位陣列賦值。 //2行程式碼是將所有資料寫在花括號內,按陣列元素在記憶體中的排列順序對各元素賦值。 int a[3][4] = { { 1 }, { 2 }, { 3 } }; //對部分元素賦值。 //結果為:1 0 0 0 // 2 0 0 0 // 3 0 0 0 int a[3][4] = { { 1 }, { 0, 2 }, { 0, 0, 3 } }; //對每一行中的部分元素賦值 //結果為:1 0 0 0 // 0 2 0 0 // 0 0 3 0 int a[3][4] = { { 1 }, { 3, 4 } }; //只對某幾行元素賦初值 //結果為:1 0 0 0 // 3 4 0 0 // 0 0 0 0
注意:在某些情況下行的長度可省略,但是在任何情況下列的長度都不能省略!
//如果對全部元素都賦初值,則定義陣列時對一維的長度可以不指定。 //下面兩行程式碼等價。 int a[3][4] = { { 1, 2, 3, 4 }, { 5, 6, 7, 8 }, { 9, 10, 11, 12 } }; int a[ ][4] = { { 1, 2, 3, 4 }, { 5, 6, 7, 8 }, { 9, 10, 11, 12 } }; //結果為:1 2 3 4 // 5 6 7 8 // 9 10 11 12 //在定義時也可以只對每行元素都賦初值,此時省略一維的長度。 int a[ ][4] = { { 1 }, { 2 }, { 3 } }; //結果為:1 0 0 0 // 2 0 0 0 // 3 0 0 0
(三)二維陣列的使用
*二維陣列也是通過訪問的。
*二維陣列大小的計算:
程式碼如下:
int a[3][4] = { 0 };
int sz_i = sizeof(a) / sizeof(a[0]);
int sz_j = sizeof(a[0]) / sizeof(a[0][0]);
二維陣列的舉例:
(1)舉例1
//輸入並列印一個二維陣列
#include <stdio.h>
#include <stdlib.h>
int main()
{
int a[3][4] = { 0 };
int i, j;
for(i = 0;i < 3;i++)
{
for(j = 0;j < 4;j++)
{
a[i][j] = i+j;
printf("%d ",a[i][j];
}
printf(" \n");
}
system("pause");
return 0;
}
(2)舉例2