[問題] 函數return array pointer跟不return

看板C_and_CPP作者 (大魯閣_最強打者)時間10年前 (2015/04/30 13:38), 編輯推噓1(109)
留言10則, 6人參與, 最新討論串1/1
請大大賜教 兩種寫法: 1. main() { char* buf; buf=malloc(2048*sizeof(char)); func(buf); printf(buf); //試印出buf內容 但為空 } void func(char* buf ) { buf= SetArray(); // 回傳一個 char * pointer給buf } 此法不work 2. main() { char* buf; buf=malloc(2048*sizeof(char)); buf=func(buf); printf(buf); //試印出buf內容 ok } char* func(char* buf ) { buf= SetArray(); // 回傳一個char * pointer給buf return buf; } 第一種不行 但第二種可以 請問我第一種可能是因為哪邊不合規定嗎 或者這樣做法根本是錯誤的 Thank you~ -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 118.163.48.108 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1430372283.A.812.html

04/30 13:48, , 1F
第一個 func(&buf); void func(char **buf)
04/30 13:48, 1F

04/30 13:49, , 2F
*buf = SetArray();
04/30 13:49, 2F

04/30 13:50, , 3F
你得把原本的 address 傳給 func 才修改得到原值
04/30 13:50, 3F

04/30 13:51, , 4F
看看置底13誡的第13項,應該就懂,因為你傳進去的是指標的
04/30 13:51, 4F

04/30 13:52, , 5F
複本,不然你就得傳指標的指標進去才行~~
04/30 13:52, 5F

04/30 13:53, , 6F
感謝asilzheng大 , it works!
04/30 13:53, 6F

04/30 13:54, , 7F
我再思考一下 為何要用雙重指標
04/30 13:54, 7F

04/30 14:14, , 8F
用void func(char *&buf)
04/30 14:14, 8F

04/30 15:05, , 9F
實際上兩個都有問題
04/30 15:05, 9F

04/30 18:38, , 10F
要是只有這種資訊,2的寫法也會memory leak
04/30 18:38, 10F
文章代碼(AID): #1LGR-xWI (C_and_CPP)