[問題] malloc 的問題

看板C_and_CPP (C/C++)作者 (俊)時間14年前 (2012/05/05 20:57), 編輯推噓0(116)
留言8則, 4人參與, 最新討論串1/1
有一個結構 typedef struct data { int x; int y; }DATA; 然後main裡面宣告了 DATA *ptr; 然後把它傳到function裡面 function(filename, &ptr); 所以到了function裡面變成 兩層的指標 DATA** ptr 那malloc 和 fscanf該怎麼使用 (*ptr)=(DATA*)malloc(sizeof(DATA)*lenth); 這樣對嗎? 如果換一個方法 for (i = 0; i < lenth; i++) { *(ptr + i) = (DATA*) malloc (sizeof(DATA)) fscanf(ptr, %d %d, ... ); } 兩個都可以嗎? 還是哪個比較好 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.39.24.2

05/05 21:27, , 1F
第二個不可以,因為你在 main 只有一個位置裝 DATA 指標
05/05 21:27, 1F

05/05 22:04, , 2F
請問為什麼要function(filename, &ptr);?
05/05 22:04, 2F

05/05 22:04, , 3F
function(filename, ptr);這樣不是比較方便嗎?
05/05 22:04, 3F

05/05 22:07, , 4F
因為 ptr 是 output ,這裡的用法是 pass by address
05/05 22:07, 4F

05/05 23:43, , 5F
哈,我忘了居然是在function中用malloc..好複雜的寫法
05/05 23:43, 5F

05/05 23:46, , 6F
這樣的話DATA *ptr = function(filename);這樣就可了吧
05/05 23:46, 6F

05/07 22:45, , 7F
你一定在開玩笑!!
05/07 22:45, 7F

05/08 00:34, , 8F
和氣生財
05/08 00:34, 8F
文章代碼(AID): #1FfIEq-H (C_and_CPP)
文章代碼(AID): #1FfIEq-H (C_and_CPP)