当前位置:   article > 正文

STC89C52单片机中指针的运用与实际案例演示_stc的单片机指针该如何定义

stc的单片机指针该如何定义

目录

小端分配的方式

C语言中*的功能

数据宽度

传递参数

传递返回值

直接访问物理地址下的数据

访问硬件指定内存下的数据,如设备ID号等

将复杂格式的数据转换为字节,方便通信与存储


指针(Pointer)是C语言的一个重要知识点,其使用灵活、功能强大,是C语言的灵魂

指针与底层硬件联系紧密,使用指针可操作数据的地址,实现数据的间接访问

小端分配的方式:

将由小到大的数字依次存储在由小到大的地址中,这种存储方式叫小端分配

数组内部不同变量之间也是按地址由小到大的顺序来储存,中间没有存储别的数据。

同样的如果是short c[ ]这样的类型,那么每个数据内部是按short的方式储存,即分2个字节储存,不同数据之间又是按顺序储存的

C语言中*的功能:

1,乘号

2,定义指针

3,取出数据

数据宽度:

指针在加减的时候是以一个数据为基本单位的,否则就没有意义了。

如果定义的是int型的指针,那么进行加减相当于是加减4个字节。

C语言要巧用&与*对数据进行转换,保证指针等级一致,如果有需要可能需要用到强制转换:

  1. float num;
  2. unsigned char *p;
  3. p=(unsigned char *)#

下面介绍在C语言中常见得指针用途:

传递参数

使用指针传递大容量的参数(数组),主函数和子函数使用的是同一套数据,避免了参数传递过程中的数据复制,提高了运行效率,减少了内存占用

使用指针传递输出参数,利用主函数和子函数使用同一套数据的特性,实现数据的返回,可实现多返回值函数的设计

(形参与实参,保证子函数与主函数的数据稳定性,子涵数的参数设置为指针,就避免了数据的复制但是此时子涵数可以改变数据,除非加上const修饰。)

数组储存用指针实现的等效方法:

 Const修饰避免子涵数擅自修改主函数传递过去的数据

使用指针传递,实现多返回值函数的设计

 C语言的库函数例如strcpy( ),将鼠标移动到括号的位置,可以发现其定义也是用的指针

传递返回值

将模块内的公有部分返回,让主函数持有模块的“句柄”,便于程序对指定对象的操作

(这里的公有部分简单的说就是全局变量,注意不能是局部变量,因为在调用函数结束,局部变量就会被销毁)

例如这里就是用的GetTime函数来使得主函数可以修改Time数组内的数据:

C语言文件功能对指定的位置创建文件,并储存数据

 C语言文件功能对指定的位置读出文件,并显示数据

直接访问物理地址下的数据

访问硬件指定内存下的数据,如设备ID号等

RAM处的单片机ID识别: 

程序区的单片机ID识别: (前缀加上code表示的是定义在ROM内的地址)

将复杂格式的数据转换为字节,方便通信与存储

(例如在不同的设备之间通信的时候传输浮点型数据)

这里不方便展现不同设备之间的数据交流,所以用程序内的不同模块来模拟,其中AirData是发送到空中的数据

大致原理:将浮点数转化为char型,一个字节一个字节的发送出去。然后接受到了以后将char转化为float型进行解码,打印输出。

空中数据模块

发送数据模块

接受数据模块

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/717967
推荐阅读
相关标签
  

闽ICP备14008679号