最近学习优秀代码,发现有使用静态结构体变量,同同时学习一下
前言
在C语言中,使用关键字
static
与结构体变量一起时,可以赋予该变量静态存储期和静态生存期。这意味着即使在声明它的函数或代码块之外,该变量也会持续存在,并且它的值在程序的整个运行期间会保持不变,除非显式地修改它。
示例
以下是如何声明和使用静态结构体变量的一些示例:
-
全局静态结构体变量:
- 当
static
关键字用于全局变量时,该变量的作用域限制在声明它的文件内,其他文件无法访问。
#include <stdio.h>
struct MyStruct {
int a;
float b;
char c;
};
static struct MyStruct myVar = {10, 3.14, 'A'};
void showMyVar() {
printf("a: %d, b: %f, c: %c\n", myVar.a, myVar.b, myVar.c);
}
// file2.c 或其他文件中无法访问 myVar
-
局部静态结构体变量:
当 static
关键字用于局部变量(在函数内部或代码块内部)时,该变量的存储期变为静态的,即它的生存期贯穿整个程序的运行期,但它的作用域仍然限制在声明它的函数或代码块内。
void someFunction() {
static struct MyStruct myVar = {20, 2.71, 'B'};
// 函数体内部的其他代码
}