设为首页 加入收藏

TOP

C语言学习笔记---static关键字
2023-07-23 13:31:40 】 浏览:105
Tags:习笔记 ---static 关键字

1、static修饰局部变量

在函数体内,只初始化一次,被static声明过的局部变量在调用过程中值不变。原因:在任意函数内定义局部变量,存储在线程中的栈区,出函数时自动摧毁,所以在每次调用这个函数时,局部变量的初始值都为定义的值在进行运算。static在修饰局部变量时,存储在静态区,函数返回时值保持不变,出函数不销毁,下一次进入函数依然存在。

 1 void test() 
 2 {
 3     int a = 10;
 4     a++;
 5     printf("%d ", a);
 6 }
 7 
 8 void static_test()
 9 {
10     static int a = 10;
11     a++;
12     printf("%d ", a);
13 }
14 int main()
15 {
16     test();
17     static_test();
18     test();
19     static_test();
20     return 0;
21 }

上述代码运行结果为11,11,11,12。主要是因为static定义过的局部变量存储在静态变量区,在调用过程中值不变

2、static修饰全局变量

被static声明过的全局变量无法被其他文件调用,只能被当前文件所调用,其他文件可以定义与其同名的变量,两者互不影响。未被static声明过的全局变量加extern关键字可以被调用。 在定义不需要与其他文件共享的全局变量时,加上static关键字能够有效地降低程序模块之间的耦合,避免不同文件同名变量的冲突,且不会误使用。

3、static修饰函数

和全局变量类似,被static声明过的函数无法被其他文件调用,只能被当前文件所调用。不同文件可以使用相同名字静态函数 ,非静态函数可以在另一个文件直接引用。

4、静态变量与全局变量的区别

全局变量的作用域是整个工程,在一个文件内定义的全局变量,在另一个文件中,通过extern 全局变量名的声明,就可以使用全局变量。静态变量的作用域是声明此变量所在的文件,其他的文件即使用extern声明也不能使用。 

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇二叉树交换左右子树递归以及非递.. 下一篇Windows OpenGL 图像褐色

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目