我正在尝试将字符数组
值传递给字符指针
。然后这个值被返回给调用它的方法,但是在它被返回之后,这个值就变成了垃圾。谁能帮帮我?
#include <stdio.h>
const char * getname(){
char nam[10];
char * name;
gets(nam);
name = nam;
return name;
}
main(){
printf("%s",getname());
getch();
}
一切正常,直到字符串返回
最佳答案
nam
变量具有函数作用域。这意味着一旦函数结束,该变量的内存就会被释放。因此,指向您返回的那段内存的指针将不再有效。
您可以传入指针:(在这种情况下有点毫无意义,如您所见)
void getname(char *name)
{
gets(name);
}
你可以malloc
(不好,因为你需要在某个时候再次free
):
const char * getname(){
char * name = malloc(10);
gets(name);
return name;
}
关于c - 返回的字符串值变成垃圾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15020105/