我想要一个像下面这样在 cpp 中初始化动态二维数组的函数
void initArrays(int n,double **a,double **b,double **c) {
a = new double*[n];
for (int i = 0; i < n; i++)
a[i] = new double[n];
b = new double*[n];
for (int i = 0; i < n; i++)
b[i] = new double[n];
c = new double*[n];
for (int i = 0; i < n; i++)
c[i] = new double[n];
}
函数调用完成,但它没有初始化我作为函数参数给出的指针。 例如,如果我在 main 中调用这个函数
double **x,**y,**z;
initArrays(3,x,y,z);
我无法访问
x[0][0]
我做错了什么?
最佳答案
指针保持未初始化状态,因为您从未给它们赋值。 init 函数中的指针是您传递的指针的拷贝。您可以通过引用传递指针:
void initArrays(int n,double **&a,double **&b,double **&c)
也就是说,使用 std::vector
可能会更好。
关于c++ - 使用指针初始化多维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25913813/