从单片机基础到程序框架(全集 2019pdf版) - 第334页
break; case 2: //选择 第 2 个现有二维数 组 CopyBuff er(table_2, SaveBuffer ); //二维 指针在这里分 别体现了输入 和输出接口作 用 break; case 3: / /选择第 3 个现 有二维数组 CopyBuff er(table_3, SaveBuffer ); //二维 指针在这里分 别体现了输入 和输出接口作 用 break; } View(Sav eBuffer[0]…

{0x10,0x11,0x12},
{0x20,0x21,0x22},
};
code unsigned char table_2[3][3]= //第 2 个现有的二维数组
{
{0xA0,0xA1,0xA2},
{0xB0,0xB1,0xB2},
{0xC0,0xC1,0xC2},
};
code unsigned char table_3[3][3]= //第 3 个现有的二维数组
{
{0xD0,0xD1,0xD2},
{0xE0,0xE1,0xE2},
{0xF0,0xF1,0xF2},
};
unsigned char SaveBuffer[3][3]; //指定的一个缓存数组
unsigned char TableSec; //选择变量
//*pTable 是输入接口带 const 修饰,*pSaveBuffer 是输出结果的接口无 const。
void CopyBuffer(const unsigned char (*pTable)[3],unsigned char (*pSaveBuffer)[3])
{
unsigned char R,L; //复制数据时用到的 for 循环变量
for(R=0;R<3;R++) //行循环
{
for(L=0;L<3;L++) //列循环
{
pSaveBuffer[R][L]=pTable[R][L]; //这里能看到,二维指针维护了二维数组的队形感
}
}
}
void main() //主函数
{
TableSec=2; //选择第 2 个现有的二维数组
switch(TableSec) //根据选择变量来切换选择某个现有的二维数组
{
case 1: //选择第 1 个现有二维数组
CopyBuffer(table_1,SaveBuffer); //二维指针在这里分别体现了输入和输出接口作用

break;
case 2: //选择第 2 个现有二维数组
CopyBuffer(table_2,SaveBuffer); //二维指针在这里分别体现了输入和输出接口作用
break;
case 3: //选择第 3 个现有二维数组
CopyBuffer(table_3,SaveBuffer); //二维指针在这里分别体现了输入和输出接口作用
break;
}
View(SaveBuffer[0][0]); //在电脑端观察某个二维数组第 0 行数据第 0 个元素的内容
View(SaveBuffer[0][1]); //在电脑端观察某个二维数组第 0 行数据第 1 个元素的内容
View(SaveBuffer[0][2]); //在电脑端观察某个二维数组第 0 行数据第 2 个元素的内容
while(1)
{
}
}
/*---C 语言学习区域的结束。-----------------------------------------------*/
在电脑串口助手软件上观察到的程序执行现象如下:
开始...
第 1 个数
十进制:160
十六进制:A0
二进制:10100000
第 2 个数
十进制:161
十六进制:A1
二进制:10100001
第 3 个数
十进制:162
十六进制:A2
二进制:10100010
分析:
SaveBuffer[0][0]是十六进制的 0xA0,提取了第 2 个二维数组的第 0 行第 0 个数据。
SaveBuffer[0][1]是十六进制的 0xA1,提取了第 2 个二维数组的第 0 行第 1 个数据。
SaveBuffer[0][2]是十六进制的 0xA2,提取了第 2 个二维数组的第 0 行第 2 个数据。
【76.6 如何在单片机上练习本章节 C 语言程序?】
直接复制前面章节中第十一节的模板程序,练习代码时只需要更改“C 语言学习区域”的代码就可以了,
其它部分的代码不要动。编译后,把程序下载进带串口的 51 学习板,通过电脑端的串口助手软件就可以观
察到不同的变量数值,详细方法请看第十一节内容。