c语言中static函数的用法

static 使用

static 修饰的变量/函数称为静态成员变量/函数
static在c语言中用法主要为:
1. 修饰局部变量
2. 修饰函数和全局变量

1. static修饰局部变量

static修饰局部变量时该变量存放在静态存储区, 生命周期为整个程序运行结束。

static局部变量初次定义时必须初始化,且只能初始化一次。(若不初始化,编译器就会自动赋值为0);(也就是说:重复调用同一个函数时,第一次调用时初始化,第二词次调用时就不会执行变量初始化那条语句啦)

特点:static局部变量”记忆性”与生存期的”全局性”
所谓的记忆性,主要是指函数在俩次调用时,第二次调用进入时,能保持第一次退出时的值。

#include <iostream>

void staticLocalVar()
{
    static int a = 0; //运行期间初始化一次,第二次调用时不在进行初始化工作
    printf("%d", a);
    a++;
}
int main()
{
    staticLocalVar(); // 第一次调用,输出 a = 0
    staticLocalVar(); // 第二次调用,输出 a = 1
    return 0;
}

注意事项:
1,“记忆性”,程序运行很重要的一点就是可重复性,而static变量的记忆性破坏了这种可重复性,造成不同时刻运行的结果可能不同。
2,“生存期”全局性和唯一性,普通的local变量的存储空间分配在栈上,因为每次调用函数时,分配的空间都可能不一样,而static具有全局唯一性的特点,每次调用时,都访问同一块内存,这就造成了一个很重要的问题,不可重入性

2

当static修饰全局变量或者函数时,不是为了限制其存储方式,而主要是为了限制该全局变量或者函数的作用域仅限于本文件,所以又称为内部函数。此时,对于外部全局变量,不是是否有static关键字,它的存储区域都在静态存储区,生存期是全局的。此时的static只是起作用域限制作用,限定作用域在本模块内部。使用内部函数的好处是:不同的人编写不同的函数时,不用担心自己定义的函数,是否会与其它文件中的函数同名。

参考文章:https://blog.csdn.net/y780465649/article/details/52155641

猜你喜欢

转载自blog.csdn.net/lovegengxin/article/details/80270953