1.数组的数组
int main() {
// 数组的数组
int a[3][4]; // 表示 3 个数组,每个数组有 4 个元素
// 数组初始化
int b[3][4] = {
{1, 2, 3 , 4},
{1, 2, 3 , 4},
{1, 2, 3 , 4}
};
int c[3][4] = {1, 2, 3, 4,1, 2, 3, 4,1, 2, 3, 4}; // 等价于 b[3][4]
// b[0][1] = 2
cout << "b[0][1] = " << b[0][1] << endl;
return 0;
}
2.遍历数组的数组
int main() {
// 遍历数组的数组
int a[3][4] = { { 1, 2, 3, 4 }, { 1, 2, 3, 4 }, { 1, 2, 3, 4 } };
for (int i = 0; i != 3; i++) {
for (int j = 0; j != 4; j++) {
cout << "a[" << i << "][" << j << "]=" << a[i][j] << endl;
}
}
return 0;
}
运行结果
a[0][0]=1
a[0][1]=2
a[0][2]=3
a[0][3]=4
a[1][0]=1
a[1][1]=2
a[1][2]=3
a[1][3]=4
a[2][0]=1
a[2][1]=2
a[2][2]=3
a[2][3]=4
3.指针和多维数组
同理:当程序使用多维数组的名字时,也会自动将其装换为指向数组首元素的指针
// 遍历数组的数组
int a[3][4] = { { 8, 2, 1, 9 }, { 3, 2, 3, 4 }, { 1, 2, 3, 4 } };
int (*p)[4] = a; // 4个元素的指针数组指向多维数组的第一个数组
for(int i = 0; i != 4; ++i) {
cout << "*p["<< i <<"] = " << (*p)[i]<<endl;
}
p = p + 1; // 4个元素的指针数组指向多维数组的第二个数组
for(int i = 0; i != 4; ++i) {
cout << "(*p)["<< i <<"] = " << (*p)[i]<<endl;
}
return 0;