Chinaunix首页 | 论坛 | 博客
  • 博客访问: 202509
  • 博文数量: 22
  • 博客积分: 641
  • 博客等级: 上士
  • 技术积分: 756
  • 用 户 组: 普通用户
  • 注册时间: 2012-03-27 00:41
文章分类

全部博文(22)

文章存档

2014年(1)

2013年(1)

2012年(20)

分类: C/C++

2012-04-01 01:35:55

一.静态全局变量

点击(此处)折叠或打开

  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. static int a;
  4. void fun(){
  5.    ++a;
  6.    printf("%d\n",a);
  7. }
  8. int main()
  9. {
  10.    //a=1;//为了显示能自动初始化,给注释了。
  11.    printf("%d\n",a);
  12.    fun();
  13.    return 0;
  14. }
1.静态全局变量在全局数据区存放
(静态数据放在全局数据区,会保留着计算的结果,程序结束后才释放掉,而自动变量在退出定义它的函数体后,会被自动释放掉,等着下次重新赋值计算)
2.未经初始化的静态全局变量会被程序自动初始化为0 
3.static int a 在其他文件中访问不了,改为int a则可实现文件之间的共享
4.在其他文件中定义 int a的话,不会跟原本定义static int a文件中的a发生命名冲突
5.作用域是全局的
二.静态局部变量

点击(此处)折叠或打开

  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. void fun(){
  4.    static int a=1;
  5. //改为int a=1比较下
  6.   printf("%d\n",a);
  7.    ++a;
  8. }
  9. int main()
  10. {
  11.    fun();
  12.    fun();
  13.    return 0;
  14. }
1.静态局部变量在全局数据区存放
2.静态局部变量在声明出会被初始化,没有直接赋值的话,会自动初始化为0
3.静态局部变量在全局数据区驻留着计算的结果,不会被释放,直到程序运行的结束
4.作用域是局部的,随着函数退出而消失
三.静态函数

点击(此处)折叠或打开

  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. static void fun(){
  4.    int a=1;
  5.    printf("%d\n",a);
  6. }
  7. int main()
  8. {
  9.    fun();
  10.    return 0;
  11. }

1.静态函数不能被其他文件访问
2.其他中可以定义相同名字的函数,不会产生冲突
 
 
哪里不对的,指点指点。不要指指点点。
阅读(4989) | 评论(6) | 转发(8) |
给主人留下些什么吧!~~

huangliglog2012-04-04 21:49:48

十七岁的回忆: 为什么不直接定义个常量呢?.....
哪里????

十七岁的回忆2012-04-04 21:46:54

为什么不直接定义个常量呢?

huangliglog2012-04-04 21:12:43

kid0607: c和指针 讲这个要更清晰一点     extern和static决定变量的linkage 即是否可以被其他文件引用      而static auto 以及register决定变量的storage class 即存储.....

neolyao2012-04-04 16:09:02

学习!

kid06072012-04-03 08:52:22

c和指针 讲这个要更清晰一点     extern和static决定变量的linkage 即是否可以被其他文件引用      而static auto 以及register决定变量的storage class 即存储的位置 比如static就是存储在静态内存 位置确定  其初始化完成于编译阶段  所以若无显示声明 会被初始化为0   变量的scope则由变量的位置决定     不同位置的变量修饰static  其含义是不一样的