int i;
这里声明了变量 i 并为其分配了内存但未初始化。
extern int i;
每当使用 extern 时,该变量只是被声明并且不会为它分配内存。为了访问它,您必须在外部重新声明相同的变量。这里 extern 指的是,您将在程序(外部源)之外定义该变量(i)的值。在你的情况下,你在里面做,所以它不会像你预期的那样工作。它可以在主程序之外定义,也可以由外部程序定义。
尝试这个:
#include<stdio.h>
int main()
{
extern int i; //Declared but memory not allocated
printf("%d",i);
return 0;
}
int i=20; //Allocated memory for i and initialized to 20 outside the prog
输出:
20
全局外部变量也可以直接初始化,而局部外部变量不能。
#include<stdio.h>
extern int i=10; //Declared, Memory allocated and defined.
int main()
{
extern int j; //Declared but memory not allocated
printf("%d --> %d",i,j);
return 0;
}
int j=20; //Memory Allocated and value defined externally.
输出:
10 --> 20
您也可以参考此链接以了解更多信息。