A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 562413895@qq.co 中级黑马   /  2015-7-23 08:09  /  469 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

1、static和extern都是用来修饰变量(局部的static实际上也是全局的);static修饰的变量,只有你得包含那个变量定义的源代码文件才可以访问(内部的变量);extern定义的变量的那个源文件都可以访问,只要声明了就可以(外部变量)
2、static对局部变量的作用
延长局部变量的生命周期,从程序启动到程序退出,但是它并没有改变变量的作用域
定义变量的代码在整个程序运行期间仅仅会执行一次
      例:void sum1(){
           //使用static修饰, 延长局部变量的生命周期,从程序启动到程序退出,但是它并没有改变变量的作用域;定义变量的代码在整个程序运行期间仅仅会执行一次
            static int num1=0;
            printf("num1=%d\n",num1);
            num1++;
}
            int main(int argc,const char *argv[])
            {
                  sum1(); //输出num=0
                  sum1(); //输出num=1
                  sum1(); //输出num=2
                  return 0;
}
2、extern不能修饰局部变量
3、static对全局变量的作用(其修饰的全局的全局变量其实是内部变量)
      由于静态全局变量的作用域限于一个源文件内,只能为该源文件内的函数公用,因此可以避免在其它源文件中引起错误。即static修饰的全局变量,表示该全局变量只能在当前文件中使用,而不能在其它文件中使用。
注意: static在不同的文件中可以声明同名的变量。
4、extern修饰全局变量
     extern修饰的全局变量,表示当前变量可以在本文件中使用,也可以在其他文件中使用
注意:extern声明的全局变量在有包含关系的两个文件中不能同名。在使用extern时可以省略关键字extern。全局变量默认的初始化为0。
5、static修饰函数
      其修饰的函数,是一个内部函数(只能在定义的那个文件中使用)
6、extern 修饰函数
    其修饰的函数,是一个外部函数(可以在包含关系的两个文件中使用)

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马