1

考虑以下情况:

int **my_array = new int*[10];
  1. 我们在这里为 my_array 分配什么?
  2. my_array是一个指向什么的指针?
  3. 有什么方法可以遍历 my_array (指针)并设置一个二维整数数组(而不是 int*)?
4

2 回答 2

3

我们分配给my_array一个数组的地址。该数组包含可以指向其他数组的指针,但还没有。

是的,我们可以这样做:

int **my_array = new int*[10];

for(int i=0; i<10; ++i)
  my_array[i] = new int[13];

my_array[2][11] = 500;
于 2015-09-16T17:04:09.010 回答
1

我们在my_array这里分配什么?

您可以将 分配int*给 的元素my_array。例如

my_array[0] = new int[20];

或者

int i;
my_array[0] = &i;

my_array是一个指向什么的指针?

它指向一个包含 10 个int*对象的数组。

有没有办法遍历my_array(指针)并设置一个二维整数数组(而不是 int*)?

不确定您希望在这里看到什么。的元素my_array只能是int*.

如果你想my_array成为一个指向二维数组的指针,你可以使用:

int (*my_array)[20] = new int[10][20];

现在您可以my_array[0][0]通过my_array[9][19].

PS如果这是您理解指针和数组的尝试,那很好。如果您尝试在工作程序中部署此代码,请不要再使用原始数组。使用std::vectorstd::array

对于一维数组,请使用:

// A 1D array with 10 elements.
std::vector<int> arr1(10);

对于二维数组,请使用:

// A 2D array with 10x20 elements.
std::vector<std::vector<int>> arr2(10, std::vector<int>(20)); 
于 2015-09-16T17:18:21.697 回答