在使用C++编写一个函数时,出现了一个常见的错误,错误如下:
void function(double ** a, vector<double> &b)
{
...
...
//多此一举先预定义一个二维指针,其维度与a相似
double **c=new double *[10];
for (int i=0;i<10;i++)
{
c[i]=new double[10];
}
...
...
//弄完对数组b操作后
a=c;
...
//再申明一个数组
vector<double> d;
//对b进行赋值操作等
b=d;
}
函数的思路大概如上,再调用这个函数后,二维指针是空的,错误的,但是数组是正确的
个人理解是指针不能传递,正确的做法:直接对二维指针a进行赋值,也不用初始化,但是在调用时需要初始化。