![]() |
在C语言中,static关键字主要用于三种场景:修饰局部变量以延长生命周期、修饰全局变量/函数以限制作用域、定义静态数组参数(C99+)。 static关键字的三种核心作用 1、修饰局部变量。 存储方式:从栈区改为静态存储区,内存分配在程序启动时完成,程序结束时释放。 生命周期:从函数调用期间延长至整个程序运行周期,保留函数多次调用间的值。 初始化:仅首次执行时初始化(默认值为0),后续调用沿用上一次的值。 典型用例:记录函数调用次数、保持状态连续性(如计数器)。 2、修饰全局变量。 作用域:将原本全局可见的变量限制为仅当前文件内可访问,避免多文件项目的命名冲突。 链接属性:禁止其他文件通过extern引用,实现模块化封装。 内存分配:与普通全局变量相同,仍存储在静态区。 3、修饰函数。 作用域限制:静态函数仅能在声明它的文件内部调用,增强代码的封装性和安全性。 典型用例:辅助函数或工具函数的内部隔离,避免被外部误用。 扩展:静态数组参数(C99标准) 在函数参数中声明void func(int arr[static 10])时,static表示arr指针至少指向含10个元素的数组,辅助编译器进行边界检查和优化。 |
static void i2C(bit T) { if(T) CLK=0,DIO=0,CLK=1; else CLK=1,DIO=1,DIO=0; } 这里不对的 |