C语音exern引用同一个文件中的变量

前几天练习C语言使用到了以前从未用过的新关键词extern,有所感悟,特意拿出来给大家分享一下
现在看这样一个代码:

#include<stdio.h>

int add(int x,int y,int z) {
    return x+y+z;
}
int main() {
    int ans=0;
    int x=2,y=2,z=2;
    ans=add(x,y,z);
    printf("%d",ans);
    return 1;
}

OK,这没问题,结果等于6。
现在我们多了一个要求,那就是add函数参数必须为空(不要吐槽为什么会有这样一个要求,示例而已),那我们在满足要求的情况下让程序正确运行呢?接下来就要用到extern关键字了,extern用于引用同一个文件中的变量或引用另一个文件中的变量,观察如下代码:


int add() {
    extern int x,y,z;
    return x+y+z;

}
int x=2,y=2,z=2;
int main() {
    int ans=0;  
    ans=add();
    printf("%d",ans);
    return 1;
}

这样就可以运行了,这只是引用同一个文件中的变量,但要注意extern后的变量必须得是全局变量,如果不是全局变量而是局部变量比如以下代码:


int add() {
    extern int x,y,z;
    return x+y+z;

}
int main() {
    int ans=0;
    int x=2,y=2,z=2;    
    ans=add();
    printf("%d",ans);
    return 1;
}

上述程序的extern的变量非全局变量而是main函数里的局部变量,这样程序是无法运行的,编译器会显示如下错误:
错误提示,minGW编译器,cmd运行
可以看出编译器找不到x,y,z变量,所以extern的变量必须得是全局的。
关于引用另一个文件中的变量,需要注意两个文件必须得在同一工程里才行,同一位置都不行!当然extern的变量也必须得是全局变量。由于本人现在只装了minGW,建立不了工程,运行时总是会报错,所以就不演示了,具体可以看以下大神的博客:
C语言正确使用extern关键字
C/C++中extern关键字详解

猜你喜欢

转载自blog.csdn.net/sinat_30477313/article/details/78759723