这个C代码行有什么问题

sai*_*dhi 1 c pointers

这个C代码行有什么问题

char *string()
{
   char *text[20];
   strcpy(text,"Hello world");
   return text;
}
Run Code Online (Sandbox Code Playgroud)

我的指针很差,我在之前的一篇论文中看到了这一点.无法解决.

unw*_*ind 7

它不编译,因为它将字符指针数组视为单个字符数组.

变量声明行应该是:

char text[200];
Run Code Online (Sandbox Code Playgroud)

完成修复后,由于您可能感兴趣的原因,它仍然会被破坏:它返回一个局部变量(text字符数组)的地址,该函数在函数返回时超出范围,从而使地址无效.有两种方法:

  1. 最简单的是制作数组static,因为只要程序运行,它就会生效.
  2. 您也可以通过使用切换到动态(堆)内存malloc(),但是free()如果此函数被大量调用,则将所有权转移给调用者并需要调用或内存将泄漏.

此外,作为次要点,其名称位于保留名称空间中(用户程序无法定义名称以其开头的函数str).此外,拍摄参数的函数应该声明为(void)在C,一对空括号并不会意味着同样的事情.