当指向动态分配的内存时,指向指针的指针会分配什么值?
What value does a pointer to pointer get assigned when points to a dynamically allocated memory?
考虑以下情况:
int **my_array = new int*[10];
- 这里我们给my_array分配什么?
my_array
是一个指针,指向什么?
- 有什么方法可以遍历 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;
What do we assign to my_array
here?
您可以将 int*
分配给 my_array
的元素。例如
my_array[0] = new int[20];
或
int i;
my_array[0] = &i;
my_array
is a pointer that points to what?
它指向一个包含 10 个 int*
个对象的数组。
Is there any way to iterate through my_array
(the pointer) and set up a two-dimensional array of integers (and not int*)?
不确定您希望在这里看到什么。 my_array
的元素只能是 int*
。
如果你想让my_array
成为一个指向二维数组的指针,你可以使用:
int (*my_array)[20] = new int[10][20];
现在您可以使用 my_array[0][0]
到 my_array[9][19]
。
PS 如果这是你理解指针和数组的尝试,那很好。如果您尝试在工作程序中部署此代码,请不要再使用原始数组。使用 std::vector
or std::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));
考虑以下情况:
int **my_array = new int*[10];
- 这里我们给my_array分配什么?
my_array
是一个指针,指向什么?- 有什么方法可以遍历 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;
What do we assign to
my_array
here?
您可以将 int*
分配给 my_array
的元素。例如
my_array[0] = new int[20];
或
int i;
my_array[0] = &i;
my_array
is a pointer that points to what?
它指向一个包含 10 个 int*
个对象的数组。
Is there any way to iterate through
my_array
(the pointer) and set up a two-dimensional array of integers (and not int*)?
不确定您希望在这里看到什么。 my_array
的元素只能是 int*
。
如果你想让my_array
成为一个指向二维数组的指针,你可以使用:
int (*my_array)[20] = new int[10][20];
现在您可以使用 my_array[0][0]
到 my_array[9][19]
。
PS 如果这是你理解指针和数组的尝试,那很好。如果您尝试在工作程序中部署此代码,请不要再使用原始数组。使用 std::vector
or std::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));