gpt4 book ai didi

c - 在 C 中返回 char*

转载 作者:行者123 更新时间:2023-11-30 19:55:37 25 4
gpt4 key购买 nike

知道为什么这段代码不起作用吗?

#include <stdio.h>

char* get_name()
{
char string[4];

string[0] = 'A';
string[1] = 'N';
string[2] = 'A';
string[3] = '\0';

return string;
}


int main()
{
char *name = get_name();

printf("%s \n", name);

return 0;
}

谢谢。

最佳答案

您的代码失败,因为您返回的指针指向立即超出范围的变量。您正在返回一个指向局部变量的指针。局部变量的作用域在函数返回时结束。因此,在范围结束后尝试引用它们是错误的。

您需要使用malloc来分配字符串。这样您就可以分配一个其生命周期在函数结束后仍然存在的对象。

char* get_name()
{
char *string = malloc(4);
strcpy(string, "ANA");
return string;
}

请记住,您需要将对 malloc 的每次调用与对 free 的调用相匹配。

char *name = get_name();
printf("%s \n", name);
free(name);

为了简化事情,我还在这里省略了错误检查。

关于c - 在 C 中返回 char*,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15029502/

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