我想要一个在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]
我在这里做错了什么?
答案 0 :(得分:4)
指针保持未初始化状态,因为您从未为其指定值。 init函数中的指针是您传递的指针的副本。您可以通过引用传递指针:
void initArrays(int n,double **&a,double **&b,double **&c)
那就是说,std::vector
可能会更好。