C語言基礎:多維數組

今天我們來學習數組的另一種用高級用法,多維數組。多維數組的定義與使用與數學定義一致,它可以表示多維的數值。

一、二維數組

例如我們先來定義一個二維數組

int array[3][4] ={ { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 } };

我們可以像上面例子一樣在數組定義時為其指定初始值,也可以在數組定義之後再為其賦值。

上面例子中我們定義了一個具有3行的數組,而這個數組的每一行都具有4個元素,所以這個二維數組一共具有3x4=12個元素。在使用多維數組時,同樣與一維數組一樣採用中括弧下標表示法如:

array[0][0] = 0;array[0][1] = 0;array[0][2] = 0;array[0][3] = 0;array[1][0] = 0;array[1][1] = 0;array[1][2] = 0;array[1][3] = 0;array[2][0] = 0;array[2][1] = 0;array[2][2] = 0;array[2][3] = 0;

同樣在中括弧的下標不一定是數值,可以使用變數或表達式。例如我們通過一個雙循環嵌套來顯示這個二維數組:

for (int i = 0; i < 3; i++){ for (int j = 0; j < 4; j++) { printf("%d
", array[i][j]); }}

二、多維數組

多維數組的定義與使用與一維和二維數組一致,只不過多了一些維度而已。我們來定義一個三維數組

int array[2][3][4] ={ { {0,0,0,0},{0,0,0,0},{0,0,0,0} }, { {0,0,0,0},{0,0,0,0},{0,0,0,0} },};

這個三維數組共有2x3x4=24個元素。同樣在使用多維數組時可以用中括弧來取得其某個元素

array[1][2][3] = 345;

再來看看多維數組賦值與顯示的例子

for (int i = 0; i < 2; i++){ for (int j = 0; j < 3; j++) { for (int k = 0; k < 4; k++) { array[i][j][k] = i * 12 + j * 4 + k; } }}for (int i = 0; i < 2; i++){ for (int j = 0; j < 3; j++) { for (int k = 0; k < 4; k++) { printf("%d ", array[i][j][k]); } }}

三、存儲方式

理論上講我們可以定義任意維度的數組和任意大小的數組,但它們並不是像數學上或物理上所定義的多維度一樣,在內存中,多維數組也是通過一維線性的方式存儲在一塊連續的內存中的。例如:

int array[2][3] = { { 0, 1, 2 }, { 3, 4, 5 }};

這個二維數組在內存中是這樣存儲的:

也就是說我們雖然定義的是一個二維數組,但它實際在內存中仍然是一個連續的、線性的一維數組,只不過在使用時可以通過兩個維度的下標來使用他們。同樣多維數組也是這樣的,我們來看一個三維數組array[2][3][2]在內存中存儲的方式

其實多維數組的本質與一維數組沒有什麼區別,只不過在使用時可以通過多維下標的方式來使用其元素,這樣就使我們可以通過更人性化的方式來使用它們。

歡迎關注公眾號:編程外星人


推薦閱讀:

Scratchapixel舉步維艱,尋求贊助或投放廣告
怎麼學技術
貢獻一個最新版的OpenGrok Docker容器
重啟《GacUI的設計與演化》
如何渲染漂亮的公式

TAG:編程 | C編程語言 | 編程語言 |