C语言之在多个文件中声明外部变量

版权声明:本文为博主原创文章,未经博主允许不得转载。https://blog.csdn.net/qq_42680327 

问题:

用C语言编写程序的时候,我们经常会遇到这样一种情况:希望在头文件中定义一个全局变量,然后包含到两个不同的c文件中,希望这个全局变量能在两个文件中共用。

Extern:

使用extern关键字来声明变量为外部变量。具体说就是在其中一个c文件中定义一个全局变量key,然后在另一个要使用key这个变量的c文件中使用extern关键字声明一次,说明这个变量为外部变量,是在其他的c文件中定义的全局变量。请注意我这里的用词:定义和声明。例如在01.c文件中定义变量key,在02.c文件中声明key变量为外部变量,这样这两个文件中就能共享这个变量key了。 

#include <stdio.h>
int A;      /*定义外部变量*/
void main(){
    int power(int n);       /*函数声明*/
    int b=3,result,c,m;
    printf("please input number A and its power m:\n");
    scanf("%d %d",&A,&m);
    c=A*b;
    printf("%d * %d =%d\n",A,b,c);
    result=power(m);
    printf("%d ^ %d =%d\n",A,m,result);
}
extern A;/*声明A为一个已定义的外部变量*/
int power(int n){
    int i,y=1;
    for(i=1;i<=n;i++){
        y*=A;
    }
    return y;
}

如图所示:

其实就是变量定义变量声明的区别,变量定义使用“数据类型+变量名称”的形式,编译器需要给他分配内存单元的;而变量声明使用“extern 变量类型+变量名称”的形式,是告诉编译器我这个变量将在其他外部c文件中定义,我这里只是在外部用它。编译器就不给他分配内存空间,而等到真正遇到变量定义的时候再给他分配内存空间。

用static声明外部变量:

有时在程序设计中希望某些外部变量只限于被本文件引用,而不能被其他文件引用。这时可以在定义外部变量时加一个static声明。

在上面的程序中,我们可以看出用static声明,程序就会报错。解决方法:可以把file02.c文件放进file01.c文件中,就OK 

发布了136 篇原创文章 · 获赞 198 · 访问量 15万+

猜你喜欢

转载自blog.csdn.net/qq_42680327/article/details/97121566