- 课程名称:嵌入式工程师
- 学习章节:c语言中的二维数组
- 学习链接:https://class.imooc.com/sc/148/learn
- 讲师姓名:大白老师
课程内容:
二维数组
含义
一维数组是相同数据类型元素的集合,但是只能表示一行数据。 若是存在行和列相关的信息(例如矩阵),我们就需要用二位数组来表示.
定义方式
格式
数据类型 数组名[行数][列数];
示例
int a[3][4]; //3行四列
3行从上往下查3个
4列从左往右查4个
有时候行可以省略但是列不能省略
int a[][4]
在内存中按照还是按照一维数组的顺序排序的。
只不过,为了方便人们识别,我们是按照二维的来理解。
内存代码图示
0xd10 1 a[0][0]
0xd14 2 a[0][1]
0xd18 3 a[0][2]
0xd1c 4 a[0][3]
0xd20 5 a[1][0]
0xd24 6 a[1][1]
0xd28 7 a[1][2]
0xd2c 8 a[1][3]
0xd30 9 a[2][0]
0xd34 10 a[2][1]
0xd38 11 a[2][2]
0xd3c 12 a[2][3]
二维数组结论
int a[3][2];
[1]a的类型: int [3][2]
[2]元素的表达方式:a[0][0],a[0][1],a[0][2] …a[2][3]
[3]元素的个数: 行数 * 列数
[4]数组的大小: 元素的个数 * 一个元素的大小<=>6 * sizeof(a[0][0])<>sizeof(a)
[5]数组最后一个元素: a[行数 - 1][列数 - 1]
[6]内存的存放方式:按行优先存放.
[7]定义二维数组的时候,行数可以省略不写,系统会根据默认
初始化元素的个数来分配对应的内存空间。但是列数一定要写。
(因为二维数组默认按行来进行优先存放的)
例如:
int a[3][4]; //true
int a[][4] = {1,2,3,4,5,6,7,8}; //true
//int a[3][] = {1,2,3,4,5,6,7,8,9}; //flase
// 123 1 2 3 4
// 567 5 6 7 8
// 789 9 0 0 0 //都是3行,有多种排列方式,系统不能识别。
// int a[][] = {1,2,3,4,5,6,7,8}; //flase
二维数组的初始化
完全初始化
int a[3][3] = {1,2,3,4,5,6,7,8,9};
int b[3][3] = {{1,2,3},{4,5,6},{7,8,9}};
部分初始化
int a[][3] = {1,2,3,4,5,6}; //true
//int a[3][] = {1,2,3,4,5,6}; //false
学习收获:
通过本章学习知道了二维数组和一维数组的区别
对维度和行列的概念有了更清楚地认知
截图打卡: