ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
【66.1 指针作为数组在函数中的出口。】 函数对外部调用者传递信息主要有三类渠道,第一类是全局变量,第二类是return返回值,第三类是指针。之前讲指针对外传递信息的时候,只讲了单个变量的情况,现在重点讲讲数组的情况。要把一个四位数的个,十,百,千位分别提取出来成为4个数,依次存放在一个包含4个字节的数组里,代码如下: void TiQu(unsigned int u16Data,unsigned char \*pu8Buffer) //“提取”函数 { unsigned char u8Ge; //个位 unsigned char u8Shi; //十位 unsigned char u8Bai; //百位 unsigned char u8Qian; //千位 u8Ge=u16Data/1%10; //提取个位 u8Shi=u16Data/10%10; //提取十位 u8Bai=u16Data/100%10; //提取百位 u8Qian=u16Data/1000%10; //提取千位 //最后,把所提取的数分别传输到“指针”这个“出口通道” pu8Buffer\[0\]=u8Ge; pu8Buffer\[1\]=u8Shi; pu8Buffer\[2\]=u8Bai; pu8Buffer\[3\]=u8Qian; } 上述代码,为了突出“出口通道”,我刻意多增加了u8Ge、u8Shi、u8Bai、u8Qian这4个局部变量,其实,这4个局部变量还可以省略的,此函数简化后的等效代码如下: void TiQu(unsigned int u16Data,unsigned char \*pu8Buffer) //“提取”函数 { pu8Buffer\[0\]=u16Data/1%10; //提取个位 pu8Buffer\[1\]=u16Data/10%10; //提取十位 pu8Buffer\[2\]=u16Data/100%10; //提取百位 pu8Buffer\[3\]=u16Data/1000%10; //提取千位 } 【66.2 例程练习和分析。】 现在编一个练习程序。 /\*---C语言学习区域的开始。-----------------------------------------------\*/ //函数声明 void TiQu(unsigned int u16Data,unsigned char \*pu8Buffer); //全局变量定义 unsigned char Gu8Buffer\[4\]; //存放提取结果的数组 //函数定义 void TiQu(unsigned int u16Data,unsigned char \*pu8Buffer) //“提取”函数 { pu8Buffer\[0\]=u16Data/1%10; //提取个位 pu8Buffer\[1\]=u16Data/10%10; //提取十位 pu8Buffer\[2\]=u16Data/100%10; //提取百位 pu8Buffer\[3\]=u16Data/1000%10; //提取千位 } void main() //主函数 { TiQu(9876,&Gu8Buffer\[0\]); //把9876这个四位数分别提取6、7、8、9存放在数组Gu8Buffer里 View(Gu8Buffer\[0\]); //把第1个数Gu8Buffer\[0\])发送到电脑端的串口助手软件上观察 View(Gu8Buffer\[1\]); //把第2个数Gu8Buffer\[1\])发送到电脑端的串口助手软件上观察 View(Gu8Buffer\[2\]); //把第3个数Gu8Buffer\[2\])发送到电脑端的串口助手软件上观察 View(Gu8Buffer\[3\]); //把第4个数Gu8Buffer\[3\])发送到电脑端的串口助手软件上观察 while(1) { } } /\*---C语言学习区域的结束。-----------------------------------------------\*/ 在电脑串口助手软件上观察到的程序执行现象如下: 开始... 第1个数 十进制:6 十六进制:6 二进制:110 第2个数 十进制:7 十六进制:7 二进制:111 第3个数 十进制:8 十六进制:8 二进制:1000 第4个数 十进制:9 十六进制:9 二进制:1001 分析: Gu8Buffer\[0\]为6。 Gu8Buffer\[1\]为7。 Gu8Buffer\[2\]为8。 Gu8Buffer\[3\]为9。 【66.3 如何在单片机上练习本章节C语言程序?】 直接复制前面章节中第十一节的模板程序,练习代码时只需要更改“C语言学习区域”的代码就可以了,其它部分的代码不要动。编译后,把程序下载进带串口的51学习板,通过电脑端的串口助手软件就可以观察到不同的变量数值,详细方法请看第十一节内容。