标题: pic单片机static STATUS_VAL ai是static的什么用法? [打印本页]

作者: w414065851    时间: 2018-8-20 16:12
标题: pic单片机static STATUS_VAL ai是static的什么用法?
用的pic单片机,ai定义为空函数

2018-08-20_160531.jpg (9.82 KB, 下载次数: 51)

2018-08-20_160531.jpg

作者: angmall    时间: 2018-8-20 22:42
static STATUS_VAL ai表示定义一个STATUS_VAL型的变量ai,其为静态变量,只初始化一次即可。

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

作者: angmall    时间: 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。







欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1