Re: [問題] C 的字串與記憶體問題
※ 引述《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)
→
10/02 10:32, , 1F
10/02 10:32, 1F
→
10/02 10:33, , 2F
10/02 10:33, 2F
→
10/02 10:33, , 3F
10/02 10:33, 3F
推
10/02 18:17, , 4F
10/02 18:17, 4F
推
10/02 22:15, , 5F
10/02 22:15, 5F
討論串 (同標題文章)
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章