从单片机基础到程序框架(全集 2019pdf版).pdf - 第198页

unsigned c har a[2] [3]= { 0,1,2, 3,4,5 }; 都行。 C 语言是很丰 富的语言, 比如二 维数组还允 许不完全初 始化的一些情 况,这种 情况我就 不再深入讲 解, 我讲解的都 是挑选一些针 对以后单片机 项目中 可能会经常用 到的语法。 二维数组我 在很多项目上 还是经常用到 的, 比如用在一 些需要把所得 的信息进行查 表判断的 项目, 在每 一行里放一 条关键词字符 串信息, 利用循环语 句…

100%1 / 836
第四十七节: 二维数组。
【47.1 二维数组的书写格式和特点。
拿一维数组和二维数组来对比一下,一维数组只有一个下标像由很多点连成的一条直线,整体给人的
是一种“线”的观感。而二维数组有两个下标,这两个下标类似平面中的行与列,也类似平面中的 X 轴和 Y
轴的坐标,通过 y 轴和 x 轴坐标就可以找到所需的点也就是二维数组的某个元素,因此,二维数组整体给
人的是一种“面”的观感。
上述是对二维数组的感性描述,二维数组是由一维数组发展而来,所以继承了很多一维数组的特点。
维数组的所有“网点”元素的地址都是挨个相临的,先从第 0 行开始“扫描”当前行的列,第 0 行第 0 列,
0 行第 1 列, 0 行第 2 ......再第 1 行第 0 列, 1 行第 1 列, 1 行第 2 列......再第 2 ......
再第 N 行,上一行“尾”元素跟下一行“头”元素的地址也是相临连续的。
二维数组未带初始化时的通用定义格式如下:
数据类型 数组名[行数 Y][列数 X];
比如:
unsigned char a[2][3]; //此处 2 代表有 2 行,3 代表 3 列。
分析:此维数定义 6 个变,跟数组样,标都是从 0 ,到(N-1)时结,此 N
代表行数或者数。所以 a[2][3]数组的素挨分别 a[0][0],a[0][1], a[0][2], a[1][0], a[1][1],
a[1][2]这 6 个变量。这 6 个变量的地址是顺序挨个相连的
二维数组有两种常用初始化格式,一种是逐行初始化,一种是整体初始化
第一种逐行初始化:
unsigned char a[2][3]=
{
{0,1,2},
{3,4,5}
};
在逐行初始化定义二维数组时,只要有初始化的数据,也可以省略行下标,但是列下标不能省略,比如:
unsigned char a[][3]=
{
{0,1,2},
{3,4,5}
};
此时编译器会根据元素的个数来确定行数是多少。
第二种整体初始化,跟一维数组一样,内部数据元素不需要额外增加大括号来分行。
unsigned char a[2][3]=
{
0,1,2,3,4,5
};
或者
unsigned char a[2][3]=
{
0,1,2,
3,4,5
};
都行。
C 语言是很丰富的语言,比如二维数组还允许不完全初始化的一些情况,这种情况我就不再深入讲解,
我讲解的都是挑选一些针对以后单片机项目中可能会经常用到的语法。
二维数组我在很多项目上还是经常用到的,比如用在一些需要把所得的信息进行查表判断的项目,在每
一行里放一条关键词字符串信息,利用循环语句进行逐行查找匹配信息。至于二维数组如何存放字符串的
识点以后再讲。这节的重点是让大家对二维数组有个初步的认识。
【47.2 例程练习和分析。
现在编写一个程序来熟悉一下二维数组的书写和使用格式。
程序代码如下:
/*---C 语言学习区域的开始。-----------------------------------------------*/
unsigned char a[2][3]= //定义和初始化一个二维数
{
{0,1,2},
{3,4,5}
};
void main() //主函数
{
a[0][0]=8; //故意把第 0 行第 0 列的这个变量赋值 8,让大家看看如何直接操作二维数组某个元素
View(a[0][0]); //把第 1 个数 a[0][0]发送到电脑端的串口助手软件上观察。
View(a[0][1]); //把第 2 个数 a[0][1]发送到电脑端的串口助手软件上观察。
View(a[0][2]); //把第 3 个数 a[0][2]发送到电脑端的串口助手软件上观察。
View(a[1][0]); //把第 4 个数 a[1][0]发送到电脑端的串口助手软件上观察。
View(a[1][1]); //把第 5 个数 a[1][1]发送到电脑端的串口助手软件上观察。
View(a[1][2]); //把第 6 个数 a[1][2]发送到电脑端的串口助手软件上观察。
while(1)
{
}
}
/*---C 语言学习区域的结束。-----------------------------------------------*/
在电脑串口助手软件上观察到的程序执行现象如下:
开始...
1 个数
十进制:8
十六进制:8
二进制:1000
2 个数
十进制:1
十六进制:1
二进制:1
3 个数
十进制:2
十六进制:2
二进制:10
4 个数
十进制:3
十六进制:3
二进制:11
5 个数
十进制:4
十六进制:4
二进制:100
6 个数
十进制:5
十六进制:5
二进制:101
分析:
变量元素 a[0][0]为 8。从原来定义的 0 变成 8,因为被 main 函数里的第 1 行代码赋值了 8
变量元素 a[0][1]为 1。
变量元素 a[0][2]为 2。
变量元素 a[1][0]为 3。
变量元素 a[1][1]为 4。
变量元素 a[1][2]为 5。
【47.3 如何在单片机上练习本章节 C 语言程序?】
直接复制前面章节中第十一节的模板程序,练习代码时只需要更改C 语言学习区域”代码就可以了,
其它部分的代码不要动。编译后,把程序下载进带串口 51 习板,通过电脑端的串口助手软件就可以观