#include <stdio.h>
int a = 33;
int main()
{
int a = 40;
{
extern int a;
printf("%d\n",a);
}
}
输出:33
任何人都可以让我知道Extern是如何在这里工作的吗?
为什么在声明变量&#34; a&#34;使用extern关键字,访问本地变量&#34; a&#34;在主要丢失?
答案 0 :(得分:1)
extern
是指全局范围内的变量 。
因此,extern int a
引用全局范围内的变量,阴影 a
中声明的自动main
。
(效果类似于C ++的::a
。)
答案 1 :(得分:0)
简单来说,extern int a;
声明了一个名为a
的变量,它存在于其他地方,通常是一个不同的编译单元。它只是告诉编译器:&#34;相信我,该变量存在并让链接器担心它实际上在哪里。&#34;。它会隐藏局部变量ìnt a = 40;
。链接器稍后查找变量,然后查找全局int a = 33;
。
此构造是一种获取被遮蔽的全局变量的访问方式。