使用指针进行多维数组初始化

时间:2014-09-18 13:18:48

标签: c++ pointers multidimensional-array

我想要一个在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]

我在这里做错了什么?

1 个答案:

答案 0 :(得分:4)

指针保持未初始化状态,因为您从未为其指定值。 init函数中的指针是您传递的指针的副本。您可以通过引用传递指针:

void initArrays(int n,double **&a,double **&b,double **&c)

那就是说,std::vector可能会更好。