#1
|
||||
|
||||
如何看三維陣列的元素?
自己試做一下三維陣列,想依序排出各元素,但顯然有點超出我的立體感 不知有無公式或方法去排出三維以上陣列各元素的順序位置?就是說a[0][0][0]是第一個元素,a[0][0][1]是第二個,然後呢?我做了一下,結果發現我以為的第三和四個元素,似乎並不存在,而是出現在我以為的第五和六的位置,而我以為是第七和八的元素,似乎也是不存在該位置?
thanks, #include <stdio.h> #include <conio.h> int main(void){ int a[3][3][2]={ {100,200},{101,201},{102,202}, {300,400}, {301,401},{302,402}, {500,600},{501,601},{502,602} }; printf("%d\n",a[0][0][0]);//100 printf("%d\n",a[0][0][1]);//200 printf("%d\n",a[0][1][0]);//0 printf("%d\n",a[0][1][1]);//0 printf("%d\n",a[1][0][0]);//101 printf("%d\n",a[1][0][1]);//201 printf("%d\n",a[1][1][0]);//0 printf("%d\n",a[1][1][1]);//0 return 0; } |
#2
|
|||
|
|||
应该是书写的时候这样子:
int a[3][3][2]={{100,200,101,201,102,202},{300,400,301,401,302,402},{500,600,501,601,502,602}}; 或者这样: int a[3][3][2]={100,200,101,201,102,202,300,400,301,401,302,402,500,600,501,601,502,602}; 这样也行: int a[3][3][2]={{{100,200},{101,201},{102,202}},{{300,400},{301,401},{302,402}},{{500,600},{501,601},{502,602}}}; 就是写成多层的话,第1级的不能超过3组。
__________________
收购各位版友的四字母com、数字米com/net/cc、三杂米com、拼音米。价格随行市价。站内联系。 此篇文章於 2014-07-01 01:27 PM 被 yumi 編輯。 |
#3
|
||||
|
||||
引用:
|
#4
|
||||
|
||||
我發現陣列的寫法有無大括號有差別?
int a[3][3][2]={ {100,200},{101,201},{102,202}, {300,400}, {301,401},{302,402}, {500,600},{501,601},{502,602} }; 像上面裡面的陣列,把二個二個加上一個大括號,則答案就錯誤了。 我發現,要嘛只有一組大括號如: int a[3][3][2]={ 100,200,101,201,102,202, 300,400,301,401,302,402, 500,600,501,601,502,602 }; 如果裡面想清楚一點標示,也要設大括號,則各列各組都要有,例如: int b[3][3][2]={ {{100,200},{101,201},{102,202}}, {{300,400}, {301,401},{302,402}}, {{500,600},{501,601},{502,602}} }; 這樣算出來的答案才是正確的。 |
#5
|
|||
|
|||
若是这样写的话
int a[3][3][2]={ {100,200},{101,201},{102,202}, {300,400}, {301,401},{302,402}, {500,600},{501,601},{502,602} }; 电脑理解成了: int a[3][3][2]={ {100,200,0,0,0,0},{101,201,0,0,0,0},{102,202,0,0,0,0} };
__________________
收购各位版友的四字母com、数字米com/net/cc、三杂米com、拼音米。价格随行市价。站内联系。 |
#6
|
||||
|
||||
引用:
為何電腦會如此理解呢? 我後面還有{300,400}, {301,401},{302,402}, {500,600},{501,601},{502,602}難道它就忽略不計了嗎? 如果真是忽略不計,這幾個元素是否還是占了記憶體並且存在,只是不被算入這個陣列之中? thanks |
#7
|
|||
|
|||
要想知道其它的值是否占用了记忆体:
printf("%d\n",sizeof(a)); 看是否超过72就知道了
__________________
收购各位版友的四字母com、数字米com/net/cc、三杂米com、拼音米。价格随行市价。站内联系。 |
#8
|
||||
|
||||
答案就是72而已,所以3x3x2x4(byte)=72byte,表示a[3][3][2]就只占用72byte。但 我後面打的那些例如{300,400}, {301,401},{302,402}, {500,600},{501,601},{502,602}會占到記憶體嗎?當然不會算在a陣列的頭上,只是說它們是否還是占用到了記憶體? thanks |