【发布时间】:2012-06-08 07:42:15
【问题描述】:
我对下面的代码有些怀疑
#include<stdio.h>
int i=6;
int main()
{
int i=4;
{
extern int i;
printf("%d",i); //prints 6
}
printf("%d",i); //prints 4
}
我们知道extern 关键字表示编译器,变量在外部某处。所以问题是为什么extern 关键字访问全局i 变量而不是主函数中的i 变量?我在想一定存在矛盾,因为这两个变量都可以作为全局变量供内括号使用。 extern 关键字是访问函数外的变量还是访问大括号外的变量也是如此。
【问题讨论】:
-
int i=4;不是您所说的全局变量。它之所以可用,仅仅是因为它在父范围内。不确定您的困惑是什么?