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