[问题]关于阵列字串回传主程式的问题

楼主: 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