指向多维数组C++的指针

Pointer to multidimensional array C++

本文关键字:C++ 指针 数组      更新时间:2023-10-16

我正在努力理解如何将指针与多维数组(例如:二维、三维…(一起使用。我在网上看到了很多关于它的资源,但我似乎仍然无法理解。语法也让我很困惑。下面的语法是什么意思(为什么我们需要括号(?代码是做什么的,它是如何工作的?非常感谢。

示例1

int (*array)[5] = new int[10][5];

示例2

int c[3][2][2]; 
int (*p)[2][2] = c; 
  1. int (*arr)[5]:arr指针,指向5个int的数组
  2. int (*p)[2][2] = c;:p指针,指向2的数组,每行具有2个ints的数组

它是如何工作的?看看下面这个简单的例子:

int (*array)[2] = new int[3][2];
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 2; j++)
array[i][j] = i + j;
}

for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 2; j++)
cout << array[i][j] << ' ';
cout << 'n';
}

输出:

0 1 
1 2 
2 3 

为什么我们需要括号

考虑:

int *arr[3];

这里,arr是大小为3的数组,可以存储3个指针。所以它是一个指针数组。参见:

int a = 10;
int b = 20;
int c = 30;
arr[0] = &a; //arr[0] pointing to a
arr[1] = &b; //arr[1] pointing to b
arr[2] = &c; //arr[2] pointing to c