在C语言中,static 关键字用于函数内部的变量定义有几个主要作用:
- 局部变量的生命周期延长:通常情况下,函数中的局部变量(如自动变量)仅在函数执行期间存在。但是,当局部变量被声明为
static时,它的生命周期延长至程序运行期间。这意味着,即使函数执行完成,该变量的值也不会丢失,下次当该函数再次被调用时,该变量将保持上次执行结束时的值。 - 限制作用域:虽然
static局部变量的生命周期为整个程序运行期间,但其作用域仍限制在声明它的函数内。这意味着它只能在这个特定的函数内被访问和修改。 - 默认初始化为零:如果没有显式初始化,静态局部变量会自动初始化为零(对于指针变量,会被初始化为
NULL)。
举个例子,定义 static uint8_t temp=0u; ,这意味着 temp 是一个只在声明它的函数内可见的变量,且其值在函数调用之间会保持不变。这里它被显式初始化为 0u(即0,u 表示无符号类型),但即使没有这个初始化,它也会默认为零。这种做法常用于需要保持状态或计数的场合,例如在函数被多次调用时跟踪特定事件的发生次数。
Talk is cheap, show the code. 当然,这里我用一个简单的示例,展示了 static 关键字在C语言中的用法,特别是在函数内部定义静态变量的情况。
这个例子中,我将创建一个函数,该函数包含一个 static 变量用于跟踪该函数被调用的次数。每次调用这个函数时,这个计数器都会增加,展示了 static 变量在函数调用之间是如何保持其值的。
#include <stdio.h>
void CounterFunction() {
// 定义一个static变量
static int count

最低0.47元/天 解锁文章
1万+

被折叠的 条评论
为什么被折叠?



