外部函数如何在C中工作

时间:2018-06-05 09:51:49

标签: c

#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;在主要丢失?

2 个答案:

答案 0 :(得分:1)

此上下文中使用的

extern是指全局范围内的变量

因此,extern int a引用全局范围内的变量,阴影 a中声明的自动main

(效果类似于C ++的::a。)

答案 1 :(得分:0)

简单来说,extern int a;声明了一个名为a的变量,它存在于其他地方,通常是一个不同的编译单元。它只是告诉编译器:&#34;相信我,该变量存在并让链接器担心它实际上在哪里。&#34;。它会隐藏局部变量ìnt a = 40;。链接器稍后查找变量,然后查找全局int a = 33;

此构造是一种获取被遮蔽的全局变量的访问方式。