看板 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"); : } : 執行時會在 strcpy(str, "Hello") 發生錯誤 : 是因為用 malloc 產生的動態字元陣列不能以 strcpy 分配值嗎? : 那正確寫法應該是怎麼樣呢? : 謝謝大家 如果你要把 int 傳進函式並賦予他新的值 你需要這麼做: void ChangeInt(int *x) { *x = 10; } 如果你要把 double 傳進函式並賦予他新的值 你需要這麼做: void ChangeDbl(double *x) { *x = 10.0; } 如果你要把 char 傳進函式並賦予他新的值 你需要這麼做: void ChangeChar(char *x) { *x = '1'; } 如果你要把 char * 傳進函式並賦予他新的值 你需要這麼做: void ChangeCharStar(char **x) { *x = (char *) malloc(sizeof(char)*10); } 這樣應該會比較好記吧 ^^| -- 有時候,遺忘,是令人快樂的。什麼時候?當然是有人傷了你的心的時候。  存心傷你的那個人,固然是故意和你過不去,但是被傷了心而耿耿於懷的你  ,卻是和自己過不去了。所以,記性不好的人,通常會是比較快樂的人,也  是比較不容易被擊倒的人。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.30.49 ※ 編輯: ledia 來自: 140.112.30.49 (10/02 10:27)
VictorTom:GJ:) 簡單的說, 你要把 SomeType 傳進 func 並賦予它新 10/02 10:32
VictorTom:的值, 就要傳 SomeType* (它的address)進去, 不論這個 10/02 10:33
VictorTom:SomeType 本來可能就已經是一個指標了這樣XD 10/02 10:33
joefaq:這篇說得不錯 10/02 18:17
uefang:Good 10/02 22:15