我有一个函数,它作为输入,指向2D数组的指针和指向1D数组的指针.
int resize(double *x, double **y, int n){
Run Code Online (Sandbox Code Playgroud)
此函数的目的是将x和y的大小调整为其长度(n)的两倍.
我创建了两个新的阵列 - 长度增加了一倍
double **yTemp = NULL;
double *xTemp = NULL;
xTemp = new double[2*n + 1];
yTemp = new double*[2*n + 1];
Run Code Online (Sandbox Code Playgroud)
然后我遍历并用x和y替换xTemp和yTemp的值
然后将它们设置为等于另一个:
y = yTemp;
x = xTemp;
return 2*n;
Run Code Online (Sandbox Code Playgroud)
并退出该函数,y和x似乎失去了额外的长度.
任何有关这方面的帮助都会很棒!
您之前y和x之前的分配return是设置这些变量的本地值,而不是从调用者传入的值.为此,您可以将函数声明更改为
int resize(double *&x, double **&y, int n){
Run Code Online (Sandbox Code Playgroud)
这将允许更改调用者的值.