找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2016|回复: 2
收起左侧

pic单片机static STATUS_VAL ai是static的什么用法?

[复制链接]
ID:227494 发表于 2018-8-20 16:12 | 显示全部楼层 |阅读模式
用的pic单片机,ai定义为空函数
2018-08-20_160531.jpg
回复

使用道具 举报

ID:155507 发表于 2018-8-20 22:42 | 显示全部楼层
static STATUS_VAL ai表示定义一个STATUS_VAL型的变量ai,其为静态变量,只初始化一次即可。

static表示静态的,当程序运行时这个变量就在内存中开辟地址了.当这个变量在某函数内定义时,不象自动变量那样,当调用时就存在,退出函数时就消失。静态局部变量始终存在着,也就是说它的生存期为整个源程序。
对基本类型的静态局部变量若在说明时未赋以初值,则系统自动赋予0值。而对自动变量不赋初值,则其值是不定的,非静态局部变量在函数关闭后重新打开时就会重置初始值,而静态变量的值和函数本身的调用无关,始终存在.
回复

使用道具 举报

ID:155507 发表于 2018-8-20 22:55 | 显示全部楼层
函数定义了两个静态变量,1个 unsigned char 类型,1个自定义的结构体类型

typedef struct
{
        unsigned char state;
        unsigned char time_target;
        unsigned char temp;
        unsigned char i;
} STATUS_VAL;


声明了一个名为 ai 的变量,该变量具有以下性质:
① 静态存储类型(在程序执行过程一直存在)
       第一次进入到 ai() 函数时,定义一个类型为 STATUS_VAL 的变量 ai,并且在跳出 ai() 函数时不丢弃该变量。
       第二次以及之后进入到 ai() 函数时不再定义变量 ai。STATUS_VAL 是定义的结构类型名,相当于 int,char,double 之类的。

② 块作用域(从 ai() 函数的 左花括号{ 到 ai 函数的 右花括号} )
      只能在 ai() 函数的代码块中访问变量 ai。


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表