作者ledia (下班後才下棋)
看板C_and_CPP
標題Re: [問題] C 的字串與記憶體問題
時間Fri Oct 2 10:27:15 2009
※ 引述《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