STC89C52单片机中指针的运用与实际案例演示
目录
指针(Pointer)是C语言的一个重要知识点,其使用灵活、功能强大,是C语言的灵魂
指针与底层硬件联系紧密,使用指针可操作数据的地址,实现数据的间接访问
小端分配的方式:
将由小到大的数字依次存储在由小到大的地址中,这种存储方式叫小端分配
数组内部不同变量之间也是按地址由小到大的顺序来储存,中间没有存储别的数据。
同样的如果是short c[ ]这样的类型,那么每个数据内部是按short的方式储存,即分2个字节储存,不同数据之间又是按顺序储存的
C语言中*的功能:
1,乘号
2,定义指针
3,取出数据
数据宽度:
指针在加减的时候是以一个数据为基本单位的,否则就没有意义了。
如果定义的是int型的指针,那么进行加减相当于是加减4个字节。
C语言要巧用&与*对数据进行转换,保证指针等级一致,如果有需要可能需要用到强制转换:
float num;
unsigned char *p;
p=(unsigned char *)#
下面介绍在C语言中常见得指针用途:
传递参数
使用指针传递大容量的参数(数组),主函数和子函数使用的是同一套数据,避免了参数传递过程中的数据复制,提高了运行效率,减少了内存占用
使用指针传递输出参数,利用主函数和子函数使用同一套数据的特性,实现数据的返回,可实现多返回值函数的设计
(形参与实参,保证子函数与主函数的数据稳定性,子涵数的参数设置为指针,就避免了数据的复制但是此时子涵数可以改变数据,除非加上const修饰。)
数组储存用指针实现的等效方法:
Const修饰避免子涵数擅自修改主函数传递过去的数据
使用指针传递,实现多返回值函数的设计
C语言的库函数例如strcpy( ),将鼠标移动到括号的位置,可以发现其定义也是用的指针
传递返回值
将模块内的公有部分返回,让主函数持有模块的“句柄”,便于程序对指定对象的操作
(这里的公有部分简单的说就是全局变量,注意不能是局部变量,因为在调用函数结束,局部变量就会被销毁)
例如这里就是用的GetTime函数来使得主函数可以修改Time数组内的数据:
C语言文件功能对指定的位置创建文件,并储存数据
C语言文件功能对指定的位置读出文件,并显示数据
直接访问物理地址下的数据
访问硬件指定内存下的数据,如设备ID号等
RAM处的单片机ID识别:
程序区的单片机ID识别: (前缀加上code表示的是定义在ROM内的地址)
将复杂格式的数据转换为字节,方便通信与存储
(例如在不同的设备之间通信的时候传输浮点型数据)
这里不方便展现不同设备之间的数据交流,所以用程序内的不同模块来模拟,其中AirData是发送到空中的数据
大致原理:将浮点数转化为char型,一个字节一个字节的发送出去。然后接受到了以后将char转化为float型进行解码,打印输出。
空中数据模块
发送数据模块
接受数据模块
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!