看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《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
QQ29:T_pointer 這樣寫得好像是要先tyepdef喔XD 10/02 01:00
QQ29:眼殘一開始就typedef了= = 10/02 01:04
softwind:其實 我只是希望第一po 把它看成一種data type 10/02 01:05
QQ29:我覺得原波 可能不知道兩顆星星是幹嘛的耶~ 10/02 01:06
softwind:不要一直覺得 使用 char* 是不需要 occupy mem space. 10/02 01:06
VictorTom:推樓上這句話:) 10/02 09:33