使用指针的多维数组初始化

multidimensional array initialization using pointers

本文关键字:数组 初始化 指针      更新时间:2023-10-16

我想要一个函数来初始化cpp中的动态2d数组,就像下面的一样

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];
}

函数调用完成,但它不会初始化我作为函数参数提供的指针。例如,如果我在主中调用此函数

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可能会更好。