今天我們來學習陣列的另一種用高級用法, 多維陣列。 多維陣列的定義與使用與數學定義一致, 它可以表示多維的數值。 順便推薦下我自己的C/C++學習群:598131849,
一、二維陣列
例如我們先來定義一個二維陣列
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 }
};
這個二維陣列在記憶體中是這樣存儲的:
也就是說我們雖然定義的是一個二維陣列, 但它實際在記憶體中仍然是一個連續的、線性的一維陣列, 只不過在使用時可以通過兩個維度的下標來使用他們。
其實多維陣列的本質與一維陣列沒有什麼區別, 只不過在使用時可以通過多維下標的方式來使用其元素, 這樣就使我們可以通過更人性化的方式來使用它們。