【问题标题】:Array resizing using reference / pointers使用引用/指针调整数组大小
【发布时间】:2015-07-09 15:20:09
【问题描述】:

我编写了一个小代码来调整动态数组的大小,将指针 X 作为引用传递。

void resize(int*& X , int & dimX){
int * new_X = new int [dimX+20];
 for(int i=0;i<dimX;i++)
    new_X[i] = X[i];
 delete [] X;
 X = new_X;
 dimX += 20;
}

我的疑问是:如果我决定将数组 X 作为唯一指针传递,那么代码会有什么不同? 例如:

void resize(int* X , int & dimX)

这种操作甚至可能吗? (调整大小)。非常感谢,抱歉这个愚蠢的问题,我是初学者。

【问题讨论】:

  • 原始数组不是“动态的”(正如您需要做的工作所见!)。如果您需要“动态”集合,请使用 std::vectorstd::list
  • @crashmstr 感谢您提供信息 :) 我知道向量类,但我只需要自己做一个调整大小函数,我想知道的是:传递数组 X 的最佳方法是什么功能?以及传递 int * X 而不是 int *&x 将如何影响代码。
  • 要修改作为参数传递给函数的东西,你需要传递它的引用或指向那个东西的指针。所以如果你想修改一个指针,你需要传递一个指针的引用。

标签: c++ arrays pointers reference


【解决方案1】:

如果您将X 作为int* 传递,那么您将传递指针的副本。这意味着如果您在X = new_X; 行上更改X,您只会更新副本,而不是原始。

您可以像当前一样继续使用对指针的引用,或者将X 作为int* 但返回new_X 并让调用者使用返回的值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-03-17
    • 1970-01-01
    • 1970-01-01
    • 2023-03-24
    • 2023-03-23
    • 1970-01-01
    • 1970-01-01
    • 2013-09-05
    相关资源
    最近更新 更多