搜索
您的当前位置:首页正文

C语言复习之extern和static

来源:二三娱乐

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

  • extern
    1.在main函数前面对变量a进行提前声明。也就是让main函数知道变量a的存在就行了,至于变量a定义在哪个位置,main函数不用管。
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;
}
  • static
    1.修饰局部变量:被关键字static修饰的局部变量也是静态变量。
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的作用在于限制该全局变量的作用域,只能在定义该全局变量的文件中才能使用,跟其他源文件中的同名变量互不干扰

未完。。。

Top