作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
以下是我的函数原型(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/
我是一名优秀的程序员,十分优秀!