我有一个函数,它接受输入,指向2D数组的指针和指向1D数组的指针。
int resize(double *x, double **y, int n){
此函数的目的是将x和y的大小调整为长度(n)的两倍。
我创建了两个新的数组 - 长度加倍
double **yTemp = NULL;
double *xTemp = NULL;
xTemp = new double[2*n + 1];
yTemp = new double*[2*n + 1];
然后循环遍历并将xTemp和yTemp的值替换为x和y
然后将它们设置为彼此相等:
y = yTemp;
x = xTemp;
return 2*n;
并退出该函数,y和x似乎失去了额外的长度。
对此的任何帮助都会很棒!
答案 0 :(得分:5)
y
之前x
和return
的分配是设置这些变量的本地值,而不是从调用者传入的值。为此,您可以将函数声明更改为
int resize(double *&x, double **&y, int n){
允许更改来电者的值。