看板 C_and_CPP 關於我們 聯絡資訊
請問各位我想把一個字串陣列回傳為什麼不能直接把 陣列回傳即可, 一定要用strcpy的方式以及動態記憶體配置?? char * getrandom() { char name[30]="California"; char *r = (char*) malloc(sizeof(char) *30); strncpy(r,name,sizeof(name)); return r; } 以上可以執行但是用下面的方式卻不能執行 char * getrandom() { char name[30]="hunkchen2000"; return name; } -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.250.185.240 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1529816100.A.23E.html
wawi2: local字串 function離開後就不見了 06/24 12:57
wawi2: 置底文 新手十三誡 第五條 06/24 12:58
wei115: 生命週期 06/24 13:19
jerryh001: 因為char* 是"字串開頭位置" 而不是本體 06/24 14:37
jerryh001: 同樣的問題會發生在普通陣列 如int a[100] 06/24 14:38
stupid0319: 加個static看看 06/24 22:56
Killercat: 用const char* c="hello";的寫法的話 有機會因為編譯器 06/25 11:02
Killercat: 會把字串放在data segment所以安全下莊 不過我不確定 06/25 11:03
Killercat: spec有沒有指定這個行為 06/25 11:03
cphe: variable的scope和lifetime建議先弄懂後續才有辦法進展 06/25 11:22