C语言复习之extern和static

2016-09-17  本文已影响32人  Coder大雄

static和extern关键字对变量的作用

extern int a;//声明
int main(int argc, const char * argv[]) {
    a = 10;
    return 0;
}
int a;//定义
//声明和定义是两码事。你不能省略定义,只留下声明,因为extern是用来声明一个已经定义过的变量。

2.可以将全局变量a声明为局部变量后再使用

void text ();
int main(int argc, const char * argv[]) {
    extern int a;
    a = 10;
    text();
    return 0;
}
int a;
void text () {
    printf("%d",a);//调用的是全局变量a;
}
int a;
void test() {
     static int b = 0;
     b++;
     int c = 0;
     c++;
     printf("b=%d, c=%d \n", b, c);
 }
int main() {
     int i;
     // 连续调用3次test函数
     for (i = 0; i<3; i++) {
         test();
     }
     return 0;
}
//打印的结果
/*
b=1, c=1 
b=2, c=1 
b=3, c=1 
*/
//因为变量b是静态变量,所以它只会被创建一次,而且生命周期会延续到程序结束。因为它只会创建一次,所以代码static int b = 0 只会执行一次,下次再调用test函数时,变量b的值不会被重新初始化为0。

2.修饰全局变量:很多时候,我们并不想让源文件中的全局变量跟其他源文件共享,相当于私有的全局变量,那么你就得用static关键字来定义变量。总结:如果在定义全局变量的时候加上static关键字,此时static的作用在于限制该全局变量的作用域,只能在定义该全局变量的文件中才能使用,跟其他源文件中的同名变量互不干扰

未完。。。

上一篇 下一篇

猜你喜欢

热点阅读