您的当前位置:首页>新品 > 正文

全球头条:c语言中static函数的用法 c语言中使用static修饰的变量和函数

来源:CSDN 时间:2023-04-28 10:24:36


(资料图)

static 使用

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

1. static修饰局部变量

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

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

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

#includevoid 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只是起作用域限制作用,限定作用域在本模块内部。使用内部函数的好处是:不同的人编写不同的函数时,不用担心自己定义的函数,是否会与其它文件中的函数同名。

标签: 初始化

最新新闻:

新闻放送
Top