这个C代码行有什么问题
char *string()
{
char *text[20];
strcpy(text,"Hello world");
return text;
}
Run Code Online (Sandbox Code Playgroud)
我的指针很差,我在之前的一篇论文中看到了这一点.无法解决.
它不编译,因为它将字符指针数组视为单个字符数组.
变量声明行应该是:
char text[200];
Run Code Online (Sandbox Code Playgroud)
完成修复后,由于您可能感兴趣的原因,它仍然会被破坏:它返回一个局部变量(text字符数组)的地址,该函数在函数返回时超出范围,从而使地址无效.有两种方法:
static,因为只要程序运行,它就会生效.malloc(),但是free()如果此函数被大量调用,则将所有权转移给调用者并需要调用或内存将泄漏.此外,作为次要点,其名称位于保留名称空间中(用户程序无法定义名称以其开头的函数str).此外,拍摄参数的函数应该声明为(void)在C,一对空括号并不会意味着同样的事情.