Re: [問題] C 的字串與記憶體問題

看板C_and_CPP (C/C++)作者 (software everywhere)時間16年前 (2009/10/02 00:51), 編輯推噓2(204)
留言6則, 3人參與, 最新討論串2/3 (看更多)
※ 引述《bayes (貝斯)》之銘言: : 各位好: : 請問下面這一段程式有什麼問題嗎 : void getMemory(char* p, int num) : { :   p = (char*)malloc(sizeof(char)*num); : } : void main() : { :   char* str = NULL; :   getMemory(str, 100); :   strcpy(str, "Hello"); : } 換個角度看 typedef char* T_Pointer; void getMemory( T_Pointer p_, int num){ p_ = (T_Pointer*)malloc( sizeof(*p_)*num ); } 上面這個動作 你覺得對嗎? 你改 p_ 事實上 她也只是外面的copy而已 你並沒有真的 透過它的address改到任何東西~ 正確版 應該是 你把address傳進去 caller: T_Pointer ptr; //這邊就挖一塊空間了 getMemory( &ptr, 100 ); // ^^^ 把address丟進去 so 相對應的函式宣告應該是 void getMemory( T_Pointer *p_, int num); 實作的時候 就交給compiler 給你error/warning message吧 我傾向 讓你自然而然學會 閱讀compiler的message... -- -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.166.120.44

10/02 01:00, , 1F
T_pointer 這樣寫得好像是要先tyepdef喔XD
10/02 01:00, 1F

10/02 01:04, , 2F
眼殘一開始就typedef了= =
10/02 01:04, 2F

10/02 01:05, , 3F
其實 我只是希望第一po 把它看成一種data type
10/02 01:05, 3F

10/02 01:06, , 4F
我覺得原波 可能不知道兩顆星星是幹嘛的耶~
10/02 01:06, 4F

10/02 01:06, , 5F
不要一直覺得 使用 char* 是不需要 occupy mem space.
10/02 01:06, 5F

10/02 09:33, , 6F
推樓上這句話:)
10/02 09:33, 6F
文章代碼(AID): #1AnDuhs- (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1AnDuhs- (C_and_CPP)