如何更新函数外的数组(指向指针)

aeo*_*ail 0 c++ pointers

我有一个函数,它作为输入,指向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似乎失去了额外的长度.

任何有关这方面的帮助都会很棒!

120*_*arm 5

您之前yx之前的分配return是设置这些变量的本地值,而不是从调用者传入的值.为此,您可以将函数声明更改为

int resize(double *&x, double **&y, int n){
Run Code Online (Sandbox Code Playgroud)

这将允许更改调用者的值.