- 一、C++的二维数组
- 二、初始化二维数组
- 三、二维数组的访问
- 四、C++指向数组的指针
多维数组最简单的形式是二维数组。一个二维数组,在本质上,是一个一维数组的列表。声明一个 x 行 y 列的二维整型数组,形式如下:
type arrayName [ x ][ y ];
其中,type 可以是任意有效的 C++ 数据类型,arrayName 是一个有效的 C++ 标识符。
二、初始化二维数组多维数组可以通过在括号内为每行指定值来进行初始化。下面是一个带有 3 行 4 列的数组。
int a[3][4] = {
{0, 1, 2, 3} ,
{4, 5, 6, 7} ,
{8, 9, 10, 11}
};
等同于:
int a[3][4] = {0,1,2,3,4,5,6,7,8,9,10,11};
三、二维数组的访问
二维数组中的元素是通过使用下标(即数组的行索引和列索引)来访问的。
#includeusing namespace std; int main () { int a[3][4] = { {0, 1, 2, 3} , {4, 5, 6, 7} , {8, 9, 10, 11} }; for ( int i = 0; i < 3; i++ ) { for (int j = 0; j < 4; j++) { cout << "a[" << i << "][" << j << "]: "; cout << a[i][j] << " "; } cout << endl; } return 0; }
输出:
a[0][0]: 0 a[0][1]: 1 a[0][2]: 2 a[0][3]: 3 a[1][0]: 4 a[1][1]: 5 a[1][2]: 6 a[1][3]: 7 a[2][0]: 8 a[2][1]: 9 a[2][2]: 10 a[2][3]: 11四、C++指向数组的指针
数组名是指向数组中第一个元素的常量指针。
因此,在下面的声明中:
ouble runoobAarray[50];
runoobAarray 是一个指向 &runoobAarray[0] 的指针,即数组 runoobAarray 的第一个元素的地址。因此,下面的程序片段把 p 赋值为 runoobAarray 的第一个元素的地址:
double *p; double runoobAarray[10]; p = runoobAarray;
使用数组名作为常量指针是合法的,反之亦然。因此,*(runoobAarray + 4) 是一种访问 runoobAarray[4] 数据的合法方式。
一旦您把第一个元素的地址存储在 p 中,您就可以使用 p、(p+1)、*(p+2) 等来访问数组元素。下面的实例演示了上面讨论到的这些概念:
#includeusing namespace std; int main () { // 带有 5 个元素的双精度浮点型数组 double runoobAarray[5] = {1000.0, 2.0, 3.4, 17.0, 50.0}; double *p; p = runoobAarray; // 输出数组中每个元素的值 cout << "使用指针的数组值 " << endl; for ( int i = 0; i < 5; i++ ) { cout << "*(p + " << i << ") : "; cout << *(p + i) << endl; } cout << "使用 runoobAarray 作为地址的数组值 " << endl; for ( int i = 0; i < 5; i++ ) { cout << "*(runoobAarray + " << i << ") : "; cout << *(runoobAarray + i) << endl; } return 0; }
输出:
使用指针的数组值 *(p + 0) : 1000 *(p + 1) : 2 *(p + 2) : 3.4 *(p + 3) : 17 *(p + 4) : 50 使用 runoobAarray 作为地址的数组值 *(runoobAarray + 0) : 1000 *(runoobAarray + 1) : 2 *(runoobAarray + 2) : 3.4 *(runoobAarray + 3) : 17 *(runoobAarray + 4) : 50



