陣列中的陣列(二維思維基本運用概念)【重要】

如題所述,以下程式演繹兩種方式詮釋陣列中的陣列類似二維【n[3][3]】,其實在電腦記憶體中所記錄的還是等於9個int空間,且是連續的,並不是像我們所想的二維方式,這個二維是使用者所想像出來的。
記憶體與實際紀錄
*n[0][0]**n[0][1]**n[0][2]**n[1][0]**n[1][1]**n[1][2]**n[2][0]**n[2][1]**n[2][2]*
***int******int*****int******int*****int******int*****int******int******int**
範例的二維想像:
*****J*****
****j0*j1*j2*
**i0  1   2   3
i *i1  4   5   6
**i2  7   8   9
***********
下面範例用兩種方式詮釋陣列中的陣列,陣列n則是在宣告時以定義好每個陣列中int的數值,當然列印方式可以是一個與記憶體相同連續不換行的數字,但這邊我是想像成二維方式列印出來,所以運用了兩層for迴圈加上換行去列印n陣列已達成我想像的二維。
另外陣列g則是利用For迴圈條件判斷,以及counter++給予其數值。

【for(i=0;i<3;++i)】是第一個[3],其用於印出三組n[0][ ],n[1][ ],n[2][ ];
【for(j=0;j<3;++j)】是第二個[3],其用於印出每組內容值n[ ][0],n[ ][1],n[ ][2];

#include<stdio.h>
int main(){
int i,j,k=10;
int n[3][3]={
{1,2,3},
{4,5,6},
{7,8,9}
};
int g[3][3];
for(i=0;i<3;++i){
for(j=0;j<3;++j){
++k;
g[i][j]=k;
}
}
for(i=0;i<3;++i){
for(j=0;j<3;++j){
printf("%d ",g[i][j]);
}
printf("\n");
}
for(i=1;i<=3;++i){
for(j=1;j<=3;++j){
printf("%d ",n[i-1][j-1]);
}
printf("\n");
}
return 0;
}

留言