1、什么是多维数组
可以简单地理解为由多个一维数组在不同的维度组合而成. 下文以二维数组为主。
2、数组定义格式
元素类型 数组名[元素个数][元素个数][…];
3、初始化
3.1、声明并初始化
1
| int s[2][1] = {{1},{2}};
|
3.2、先声明后再初始化
1 2 3
| int score[2][2]; score[0][0] = 90; score[1][1] = 90;
|
3.3、声明不指定个数
1
| int ss[][1] = {{1},{2}};
|
4、代码案例
4.1、源代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| #include<stdio.h> int main() { int s[2][2] = {{0,1},{1,2}}; for (int i = 0; i < 2; ++i) { for (int j = 0; j < 2; ++j) { printf("s[%d][%d]=%d\t",i,j,s[i][j]); } printf("\n"); } return 0; }
|
4.2、运行结果

5、二维数组的内存分析
5.1、源代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| #include<stdio.h> int main() { int s[2][2] = {{0,1},{1,2}}; printf("==========内存地址==========\n"); printf("&s=%p\n",&s); printf("s=%p\n",s); printf("s[0]=%p\n",&s[0]); printf("s[1]=%p\n",&s[1]); printf("==========常用输出==========\n"); for (int i = 0; i < 2; ++i) { for (int j = 0; j < 2; ++j) { printf("s[%d][%d]=%d\t,address=%p\n",i,j,s[i][j],&s[i][j]); } printf("\n"); } return 0; }
|
5.2、运行结果

5.3、内存分析
- 逻辑表格
|-|-|-|
|s[0]|-| s[0][0]|-| s[0][1]|
|s[1]|-| s[1][0]|-| s[1][1]|
- 物理图

5.4、总结
多维数组,可以认为是数组的嵌套。可以从逻辑和物理两个角度进行了解。
- 逻辑上可以理解为表格,分行和列
- 物理上,还是连续存储