首页 > 编程笔记 > C语言笔记 阅读:197

C语言static静态变量的用法(新手必看)

在 C 语言中,普通的变量也叫动态变量,默认有个保留字 auto,可以省略。

如果在变量前面增加一个 static 修饰符,那这个变量就成了静态变量。存储在静态数据区的变量会在程序刚开始运行时就完成初始化,也是唯一的一次初始化,声明它的函数共享这个变量。

函数中的静态变量是静态局部变量,退出函数后不被释放,在程序运行结束时才释放。该变量只在函数中可使用,退出函数后就不能再使用,其生存期为整个源程序,但只能在定义该变量的函数内使用。

静态局部变量在编译时赋初值,且只赋一次,赋值语句在程序运行时不再运行。如果在定义局部变量时不赋初值,则对静态局部变量来说,编译时自动赋初值 0(对数值型变量)或空字符(对字符型变量)。

静态变量中所谓的静态,是指在程序运行的过程中,变量的内存地址始终不变,而不是其值不变。静态全局变量的作用域只在定义它的文件里,不能被其他文件使用。

static 修饰的静态变量有以下特征:
【实例】静态变量使用。
分别定义局部和全局静态变量的代码如下:
#include <stdio.h>
 
int fun(void){
    static int count = 3; //事实上此赋值语句从来没有执行过
    return count--;
}
 
static int count = 1; //全局静态变量
 
int main(void)
{
    printf("global\t\tlocal static\n");
    for(; count <= 3; ++count)
        printf("%d\t\t%d\n", count, fun());
 
    return 0;
}
编译运行,结果如下:
global local static
1         3
2         2
3         1

相关文章