c++ - 从函数返回一个动态创建的数组

标签 c++ gcc

我正在尝试创建一个动态分配数组、设置元素值并返回数组大小的函数。数组变量是在函数外部声明并作为参数传递的指针。这是代码:

#include <cstdlib>  
#include <iostream>  
using namespace std;  

int doArray(int *arr) {  
    int sz = 10;  
    arr = (int*) malloc(sizeof(int) * sz);  

    for (int i=0; i<sz; i++) {  
        arr[i] = i * 5;  
    }  

    return sz;  
}  

int main(int argc, char *argv[]) {  

    int *arr = NULL;  
    int size = doArray(arr);  

    for (int i=0; i<size; i++) {  
        cout << arr[i] << endl;  
    }  

    return 0;  

}  

由于某种原因,程序在 main() 中 for 循环的第一次迭代时终止!我做错了什么吗?

最佳答案

如果你想以这种方式分配内存,你必须使用:

int doArray(int*& arr)

否则指针只会在函数范围内改变。

关于c++ - 从函数返回一个动态创建的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2484669/

相关文章:

c++ - 使用 FFMPEG 库到 UDP 流 mpeg2 ts 视频延迟/初始连接问题

.lib 中的 C++ 静态变量未初始化

c++ - 在按下 QPushbutton 时做一些事情

c - 海湾合作委员会 7.2 : warning: left shift count >= width of type

c - 如何在 mingw 上使用 libcurl 和 gcc 编译应用程序

GCC 中的 C 函数对齐

c - 为什么 -2147483648 可以放入 int 时自动提升为 long?

c++ - 不初始化 C++ 构造函数中的每个成员是一种好习惯吗?

linux - 安装 gcc-4.9 g++-4.9 时无法获取存档

c++ - 线程类