局部与全局

局部变量在函数内;全局在文件作用域。生命周期与可见性不同。

1. 例子

C
1int counter = 0; // 全局
2 
3void bump(void) {
4 counter++;
5 int local = 1; // 函数结束消失
6}
7 
8void show(void) {
9 printf("%d\n", counter);
10}

2. 对比

类型可见性生命周期建议
局部函数内函数调用期间优先使用
全局整个文件程序运行期少用、接口清晰
static 局部函数内程序运行期需要保留状态时用

3. static 局部变量例子

C
1void demo(void) {
2 static int n = 0; // 只初始化一次,函数间保持
3 n++;
4 printf("n=%d\n", n);
5}
6/* 连续调用 demo:n 为 1,2,3... */