一.静态全局变量
- #include<stdio.h>
- #include<stdlib.h>
- static int a;
- void fun(){
- ++a;
- printf("%d\n",a);
- }
- int main()
- {
- //a=1;//为了显示能自动初始化,给注释了。
- printf("%d\n",a);
- fun();
- return 0;
- }
1.静态全局变量在全局数据区存放
(静态数据放在全局数据区,会保留着计算的结果,程序结束后才释放掉,而自动变量在退出定义它的函数体后,会被自动释放掉,等着下次重新赋值计算)
2.未经初始化的静态全局变量会被程序自动初始化为0
3.static int a 在其他文件中访问不了,改为int a则可实现文件之间的共享
4.在其他文件中定义 int a的话,不会跟原本定义static int a文件中的a发生命名冲突
5.作用域是全局的
二.静态局部变量
- #include<stdio.h>
- #include<stdlib.h>
- void fun(){
- static int a=1;
- //改为int a=1比较下
- printf("%d\n",a);
- ++a;
- }
- int main()
- {
- fun();
- fun();
- return 0;
- }
1.静态局部变量在全局数据区存放
2.静态局部变量在声明出会被初始化,没有直接赋值的话,会自动初始化为0
3.静态局部变量在全局数据区驻留着计算的结果,不会被释放,直到程序运行的结束
4.作用域是局部的,随着函数退出而消失
三.静态函数
- #include<stdio.h>
- #include<stdlib.h>
- static void fun(){
- int a=1;
- printf("%d\n",a);
- }
- int main()
- {
- fun();
- return 0;
- }
1.
静态函数不能被其他文件访问
2.其他中可以定义相同名字的函数,不会产生冲突
哪里不对的,指点指点。不要指指点点。
阅读(4989) | 评论(6) | 转发(8) |