gpt4 book ai didi

c++ - 如何在 C/C++ 函数中返回 char* 数组?

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

以下是我的函数原型(prototype)(我们无法更改此函数的原型(prototype)):

char** myfun()
{
// implementation
}

如何从此函数返回 char* 数组,以便我可以在此方法的调用者中访问/打印数组的内容。我尝试使用动态内存分配创建数组,但它不起作用。

是否可以在没有动态内存分配的情况下做到这一点?能给我指点一下吗?

最佳答案

除非您想从该函数返回全局 char*[],是的,您需要动态分配,对于存储在堆栈中的所有变量,这是您可以安全返回函数内部创建的变量的唯一方法一旦函数完成就会被销毁。

char** myfun()
{
char **p = new char*[10];
return p;
//or return new char*[10];
}

int main() {

char **pp = test();

char *p = "aaa";

pp[0] = p;

delete[] pp; //if you allocate memory inside the array, you will have to explicitly free it:
//Example: pp[1] = new char("aaa"); would require delete p[1];

}

--编辑

您不必使用动态分配,您可以返回局部静态变量。请记住,这不是一个好方法:该函数不是线程安全的或可重入的。

关于c++ - 如何在 C/C++ 函数中返回 char* 数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26879457/

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