当指针指向动态分配的内存时,指针指向指针的指针被赋什么值?

What value does a pointer to pointer get assigned when points to a dynamically allocated memory?

本文关键字:指针 什么 内存 动态分配      更新时间:2023-10-16

考虑以下情况:

int **my_array = new int*[10];
    我们给my_array赋了什么值?
  1. my_array是指向什么的指针?
  2. 是否有任何方法通过my_array(指针)迭代并建立一个二维整数数组(而不是int*)?

将数组的地址赋值给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;

我们在这里给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是一个指向2D数组的指针,你可以使用:

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

现在您可以使用my_array[0][0]my_array[9][19]

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

对于1D数组,使用:

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

对于2D数组,使用:

// A 2D array with 10x20 elements.
std::vector<std::vector<int>> arr2(10, std::vector<int>(20)); 
相关文章: