从单片机基础到程序框架(全集 2019pdf版).pdf - 第196页
十六进制:C 二进制:110 0 分析: 变量元素 x[ 0]为 25。 变量元素 x[ 1]为 26。 变量元素 x[ 2]为 28。 变量元素 y[ 0]为 10。 变量元素 y[ 1]为 11。 变量元素 y[ 2]为 12。 【46.5 如何在单片机上练习本章节 C 语言程序?】 直接复制前 面章节中第十 一节的模板程 序, 练习代码时只需要 更改 “ C 语言学习区 域” 的 代码就可 以了, 其它 部分的 代码 不要动 。编…

View(x[0]); //把第 1 个数 x[0]发送到电脑端的串口助手软件上观察。
View(x[1]); //把第 2 个数 x[1]发送到电脑端的串口助手软件上观察。
View(x[2]); //把第 3 个数 x[2]发送到电脑端的串口助手软件上观察。
View(y[0]); //把第 4 个数 y[0]发送到电脑端的串口助手软件上观察。
View(y[1]); //把第 5 个数 y[1]发送到电脑端的串口助手软件上观察。
View(y[2]); //把第 6 个数 y[2]发送到电脑端的串口助手软件上观察。
while(1)
{
}
}
/*---C 语言学习区域的结束。-----------------------------------------------*/
在电脑串口助手软件上观察到的程序执行现象如下:
开始...
第 1 个数
十进制:25
十六进制:19
二进制:11001
第 2 个数
十进制:26
十六进制:1A
二进制:11010
第 3 个数
十进制:28
十六进制:1C
二进制:11100
第 4 个数
十进制:10
十六进制:A
二进制:1010
第 5 个数
十进制:11
十六进制:B
二进制:1011
第 6 个数
十进制:12

十六进制:C
二进制:1100
分析:
变量元素 x[0]为 25。
变量元素 x[1]为 26。
变量元素 x[2]为 28。
变量元素 y[0]为 10。
变量元素 y[1]为 11。
变量元素 y[2]为 12。
【46.5 如何在单片机上练习本章节 C 语言程序?】
直接复制前面章节中第十一节的模板程序,练习代码时只需要更改“C 语言学习区域”的代码就可以了,
其它部分的代码不要动。编译后,把程序下载进带串口的 51 学习板,通过电脑端的串口助手软件就可以观
察到不同的变量数值,详细方法请看第十一节内容。

第四十七节: 二维数组。
【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
};
或者