1. 程式人生 > >關於多維陣列的一點個人的理解(以三維陣列為例)

關於多維陣列的一點個人的理解(以三維陣列為例)

直接上程式!!!!!(下面的程式是以行為優先的陣列為例

#include <stdio.h>

int main(int argc, char *argv[])
{
int array[3][2][2] = {0,1,2,3,4,5,6,7};//相當於3個2 * 2 的二維陣列
printf("%d %d %d %d\n",&array[0],&array[0][0],&array[0][0][0],&array);
//如果說把三維陣列比作一個立方體的話,那麼這個立方體底邊是個2*2的正方形,高為3
//注意:三維陣列的高維度是寫在最前面的,也就是立方體的z
//下面的四行程式碼相當於立方體的第一層
printf("%d \n",&array[0][0][0]);
printf("%d \n",&array[0][0][1]);
printf("%d \n",&array[0][1][0]);
printf("%d \n",&array[0][1][1]);
//下面的四行程式碼相當於立方體的第二層
printf("%d \n",&array[1][0][0]);
printf("%d \n",&array[1][0][1]);
printf("%d \n",&array[1][1][0]);
printf("%d \n",&array[1][1][1]);
//下面的立方體相當於第三層
printf("%d \n",&array[2][0][0]);
printf("%d \n",&array[2][0][1]);
printf("%d \n",&array[2][1][0]);
printf("%d \n",&array[2][1][1]);
/*如果給出一個數組首地址,那麼以求最後一個元素array[2][1][1]的地址為例
最後一個元素的地址 = (最高一層立方體底下的所有元素的個數 + 元素所在層的除了元素所在行的所有元素
+ 元素所在行的除自己之外的所有元素)* 一個元素所佔位元組數 + 陣列首地址;
公式也就為Loc(Aijk) = (i * 2 * 2 + j * 2 + k) + Loc(A000); */
//另:上面的輸出順序也是三維陣列的賦值順序
return 0;
}