[問題]關於陣列字串回傳主程式的問題

作者: hunkchen2016 (我的雞巴女友)   2018-06-24 12:54:58
請問各位我想把一個字串陣列回傳為什麼不能直接把
陣列回傳即可, 一定要用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;
}
作者: wawi2 (@@)   2018-06-24 12:57:00
local字串 function離開後就不見了置底文 新手十三誡 第五條
作者: wei115 (ㄎㄎ)   2018-06-24 13:19:00
生命週期
作者: jerryh001   2018-06-24 14:37:00
因為char* 是"字串開頭位置" 而不是本體同樣的問題會發生在普通陣列 如int a[100]
作者: stupid0319 (徵女友)   2018-06-24 22:56:00
加個static看看
作者: Killercat (殺人貓™)   2018-06-25 11:02:00
用const char* c="hello";的寫法的話 有機會因為編譯器會把字串放在data segment所以安全下莊 不過我不確定spec有沒有指定這個行為
作者: cphe (魔鬼藏在垃圾筒裡)   2018-06-25 11:22:00
variable的scope和lifetime建議先弄懂後續才有辦法進展

Links booklink

Contact Us: admin [ a t ] ucptt.com