在嵌入式C语言当中,它有三个作用:
作用一:在函数中的局部变量的值在函数调用结束后不消失而保留原值,即占用的存储单元不释放,在下一次该函数调用时,该变量已有值,就是上一次函数调用结束时的值。
在函数体中,局部变量之前加上关键字static,局部变量就被定义成为一个局部静态变量。其作用域就在函数内部,函数外部无法访问。
用途:作为一个计数器,这样函数每次被调用的时候就可以进行计数。这是统计函数被调用次数的最好的办法,因为这个变量是和函数息息相关的,而函数可能在多个不同的地方被调用,所以从调用者的角度来统计比较困难。
本质:采用static声明局部变量,即将局部变量的存储位置由原来的栈中改放在静态存储区。
作用二:在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函数访问。它是一个本地的全局变量。
作用三:在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用。那就是,这个函数被限制在声明它的模块的本地范围内使用。
其实是分三种情况进行说明:
第一、定义函数内部的局部变量,分配存储空间之后,其值始终存在,存储空间在静态存储区内,普通函数内部的局部变量存放在栈中。
第二、定义函数外部,模块内的全局变量,仅在当前模块有效,其他模块无法调用。
第三、定义模块内的static函数,仅在本文件中有效。
简而言之,可以说是:限制变量、函数的作用域;设置变量的存储域。
参考资料:
《嵌入式C 进阶之道》
《Linux C编程实战》
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请
点击举报。