網域名稱俱樂部


返回   網域名稱俱樂部 > 電腦與網路技術 > 電腦網路相關技術 > 一般軟體與網路使用討論

回覆
 
主題工具
  #1  
舊 2014-06-30, 08:59 PM
哈啦 的頭像
哈啦 哈啦 目前離線
論壇管理員
 
註冊日期: 2002-05-28
文章: 22,996
預設 如何看三維陣列的元素?

自己試做一下三維陣列,想依序排出各元素,但顯然有點超出我的立體感 不知有無公式或方法去排出三維以上陣列各元素的順序位置?就是說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;
}
__________________
咖啡走路
微博


您是網站站長嗎?歡迎到站長俱樂部 一起討論吧。
按我看版規
code.club
回覆時引用此篇文章
  #2  
舊 2014-07-01, 01:21 PM
yumi yumi 目前離線
進階會員
 
註冊日期: 2005-12-29
文章: 1,373
預設

应该是书写的时候这样子:
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  
舊 2014-07-01, 02:15 PM
哈啦 的頭像
哈啦 哈啦 目前離線
論壇管理員
 
註冊日期: 2002-05-28
文章: 22,996
預設

引用:
作者: yumi 查看文章
应该是书写的时候这样子:
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组。
我正在畫圖來加強了解。

__________________
咖啡走路
微博


您是網站站長嗎?歡迎到站長俱樂部 一起討論吧。
按我看版規
code.club
回覆時引用此篇文章
  #4  
舊 2014-07-02, 01:57 PM
哈啦 的頭像
哈啦 哈啦 目前離線
論壇管理員
 
註冊日期: 2002-05-28
文章: 22,996
預設

我發現陣列的寫法有無大括號有差別?
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}}
};

這樣算出來的答案才是正確的。
__________________
咖啡走路
微博


您是網站站長嗎?歡迎到站長俱樂部 一起討論吧。
按我看版規
code.club
回覆時引用此篇文章
  #5  
舊 2014-07-02, 07:16 PM
yumi yumi 目前離線
進階會員
 
註冊日期: 2005-12-29
文章: 1,373
預設

若是这样写的话
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  
舊 2014-07-02, 07:49 PM
哈啦 的頭像
哈啦 哈啦 目前離線
論壇管理員
 
註冊日期: 2002-05-28
文章: 22,996
預設

引用:
作者: yumi 查看文章
若是这样写的话
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}
};
原來如此,十分感謝。
為何電腦會如此理解呢?
我後面還有{300,400}, {301,401},{302,402},
{500,600},{501,601},{502,602}難道它就忽略不計了嗎?
如果真是忽略不計,這幾個元素是否還是占了記憶體並且存在,只是不被算入這個陣列之中?

thanks
__________________
咖啡走路
微博


您是網站站長嗎?歡迎到站長俱樂部 一起討論吧。
按我看版規
code.club
回覆時引用此篇文章
  #7  
舊 2014-07-02, 10:13 PM
yumi yumi 目前離線
進階會員
 
註冊日期: 2005-12-29
文章: 1,373
預設

要想知道其它的值是否占用了记忆体:
printf("%d\n",sizeof(a));
看是否超过72就知道了
__________________
收购各位版友的四字母com、数字米com/net/cc、三杂米com、拼音米。价格随行市价。站内联系。
回覆時引用此篇文章
  #8  
舊 2014-07-02, 10:26 PM
哈啦 的頭像
哈啦 哈啦 目前離線
論壇管理員
 
註冊日期: 2002-05-28
文章: 22,996
預設

引用:
作者: yumi 查看文章
要想知道其它的值是否占用了记忆体:
printf("%d\n",sizeof(a));
看是否超过72就知道了


答案就是72而已,所以3x3x2x4(byte)=72byte,表示a[3][3][2]就只占用72byte。但
我後面打的那些例如{300,400}, {301,401},{302,402}, {500,600},{501,601},{502,602}會占到記憶體嗎?當然不會算在a陣列的頭上,只是說它們是否還是占用到了記憶體?

thanks
__________________
咖啡走路
微博


您是網站站長嗎?歡迎到站長俱樂部 一起討論吧。
按我看版規
code.club
回覆時引用此篇文章
回覆

主題工具

發文規則
不可以發表新主題
不可以發表回覆
不可以上傳附件
不可以編輯自己的文章

啟用 BB 代碼
論壇啟用 表情符號
論壇啟用 [IMG] 代碼
論壇禁用 HTML 代碼



所有時間均為 +8。現在的時間是 02:30 AM


本站主機由網易虛擬主機代管
Powered by vBulletin® 版本 3.8.4
版權所有 ©2000 - 2024,Jelsoft Enterprises Ltd.