#include <stdio.h>
void a();
int i;
int main()
{
printf("%d\n",i);
a();
return 0;
}
int i=5;
void a()
{
printf("%d\n",i);
}
5
5
#include <stdio.h>
void a();
extern int i;
int main()
{
printf("%d\n",i);
a();
return 0;
}
int i=5;
void a()
{
printf("%d\n",i);
}
5
5
如果输出相同,代码之间有什么区别......
如果它们相同,那么extern
答案 0 :(得分:1)
extern就像对链接器说你已经在其他文件中定义了变量(即使全局变量可以在同一文件中的其他函数内部进行外部)也不会抛出错误,现在你会发现变量然后链接它。
使用extern你唯一声明没有定义它的变量(没有分配内存)。
在你的第一个声明的第二个程序中
extern int i;
没有分配内存,但稍后在声明
时 int i = 5 ;
为i分配内存。当链接器在printf中搜索i时,如果我没有声明为extern,它会抛出一个错误,因为它的extern链接发生在它找到i的定义时。
答案 1 :(得分:0)
extern表示您声明变量但未定义变量(为其分配内存)。请查看此链接以获得有关extern的详细说明:http://www.geeksforgeeks.org/understanding-extern-keyword-in-c/