gpt4 book ai didi

c - 这个 C 代码行有什么问题

转载 作者:太空宇宙 更新时间:2023-11-04 00:25:15 25 4
gpt4 key购买 nike

这个C代码行有什么问题

char *string()
{
char *text[20];
strcpy(text,"Hello world");
return text;
}

我在指针方面很差,我在以前的一些论文中看到过这一点。无法解决。

最佳答案

它无法编译,因为它将字符指针数组视为单个字符数组。

变量声明行应该是:

char text[200];

修复完成后,它仍然有问题,原因您可能感兴趣:它返回局部变量(text 字符数组)的地址在函数返回时超出范围,从而使地址无效。有两种解决方法:

  1. 最简单的方法是使数组静态,因为只要程序运行,它就会一直存在。
  2. 您还可以使用 malloc() 切换到动态(堆)内存,但这会将所有权转移给调用者并需要调用 free() 或内存如果此函数被多次调用,将会泄漏。

另外,作为次要的一点,它的名字在一个保留的名字空间中(用户程序不能定义名字以str开头的函数)。此外,在 C 语言中,不带参数的函数应声明为 (void),一对空括号不是意思相同。

关于c - 这个 C 代码行有什么问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19632704/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com