看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《Xhocer (Xho)》之銘言: : 看了精華區裡提到 : int array[2000000000]; : 像這種太大的陣列 : 可利用int *array=new int[2000000000];的方式來建立 : 那請問二維陣列要如何用這種方式建立 : 假設有個array是[15000][40] 有兩種做法, 方法不太一樣: 1) int ** array = new int*[15000]; for(int i=0; i<15000; ++i) array[i] = new int[40]; 這是兩層的作法, 第一層是一有 15000 個 int* 的一維陣列, 然後各自是 40 個 int 的一維陣列. 2) int (*array)[40] = new int[15000][40]; 這是連續的 15000x40 個 int 的二維陣列. -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 210.242.246.249
james732:第二個方法的記憶體好像比較接近 int array[15000][40]; 06/25 22:53
VictorTom:小弟我每次要寫第二種方法那種pointer的宣告都要試誤個 06/25 23:04
VictorTom:半天....Orz 06/25 23:04
james732:其實第二個我也沒用過....XDD 06/25 23:05
ledia:!! 06/25 23:10
loveme00835:注意(2)的最低維一定要是個正整數常數, 這兩個不等價 06/25 23:43
loveme00835:應該說除了最高維以外都要 06/25 23:49
somi:問 要怎麼把vim的syntax coloring貼到bbs上啊 06/26 01:31
loveme00835:自己打色碼 06/26 01:32
CindyLinz:pietty 的「貼上指定格式」 06/26 13:14
angleevil:用第一個吧!總覺得第二個散發未定義的氣息... 06/26 14:15
purpose:缺點就是板主妹說得那樣,如果要 new 出一個多維陣列 06/26 14:22
purpose:那麼其他維度要受限制,不能用成變數,在 Runtime 才去決 06/26 14:23
purpose:定。反之,第一種方法可在 Runtime 決定 06/26 14:23
angleevil:我剛剛看了purpose的連結,它說第一維的空間可以為0 06/26 14:37
angleevil:~"~這樣設計的邏輯在? 06/26 14:37
firejox:我記得那是很神奇的東西...XD 06/26 14:45
firejox:其實還有一個是 int *array = new int[15000*40]; 06/26 14:52
purpose:第一維的大小為 0 大概是指標,不重要 06/26 16:16
angleevil:= =再次看正姐和purpose,才發現喔,的確有這限制 06/26 22:18
※ 編輯: CindyLinz 來自: 210.242.246.249 (09/10 13:17)