[問題] 32bit狀況下的malloc問題

看板C_and_CPP (C/C++)作者 (左)時間13年前 (2012/07/22 00:29), 編輯推噓0(007)
留言7則, 3人參與, 最新討論串1/1
double** B= (double**) malloc (M * sizeof(double *)); int *p = (int*)malloc(sizof(int)*length); 以上兩段程式碼不知道如何解讀 ......ORZ (第一個是板友文章內的程式碼,第二個是在亂翻書看到的) 1.第一個程式碼不知道宣告DOUBLE時後面兩個**所代表的涵意 2.如果宣告double * B是否為宣告B為double資料型態的指標 ? 3.第二段程式碼,由於書內只是很短的EXAMPLE並沒有上下段的東西 所以我自己猜length是一個變數吧,但是他所涵意的意思是否為 整數型態的指標 p 指向我們像電腦要求的一段記憶體,長度為 4byte*length 如觀念有錯請高手點錯,小弟非常需要被指正 謝謝 -- 這年頭沒真相沒得混 ORZ..... http://ppt.cc/S!iF -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.45.251.233

07/22 00:32, , 1F
1. pointer to (pointer to double),指向指標的指標
07/22 00:32, 1F

07/22 00:33, , 2F
一種可能的應用是為了動態二維陣列,爬文可以看到討論
07/22 00:33, 2F

07/22 00:34, , 3F
2. 是的。 3. 類似宣告 int p[length]; 的意思
07/22 00:34, 3F
謝謝J大解惑 但關於3的問題 int p[length] 那如果我寫成int *p = (int*)calloc(length,sizeof(int)); 是否為一樣的意思 ※ 編輯: a0916327869 來自: 114.45.251.233 (07/22 00:38)

07/22 00:40, , 4F
calloc(length, sizeof(int)); 會更符合,另外calloc會額
07/22 00:40, 4F

07/22 00:41, , 5F
外的把整個空間都清成0,但malloc不會清
07/22 00:41, 5F
※ 編輯: a0916327869 來自: 114.45.251.233 (07/22 00:44)

07/22 00:45, , 6F
謝謝 JAMES大解惑,爬過你好多解答的文章都很棒 感謝!
07/22 00:45, 6F

07/22 00:50, , 7F
比較正確安全的寫法int p[length];的length要是個常數
07/22 00:50, 7F
文章代碼(AID): #1G2jZX_T (C_and_CPP)
文章代碼(AID): #1G2jZX_T (C_and_CPP)