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