如果我宣布
static int a ;// globally and
static int a ; // locally in one function
所以现在有两个实例..
我知道所有的静态变量都会进入数据段,但它们在数据段中的区别是哪一个是本地的,哪一个是全局的?
答案 0 :(得分:1)
你实际上可以走得更远:你可以宣布
static int a;
在两个或多个对您的程序有贡献的单独文件的文件范围内。在不同范围内的每个此类声明都声明一个单独的变量。因此,给定
<强> F.C:强>
static int a;
int f() {
static int a;
return 0;
}
<强>的main.c 强>
static int a;
int f(void);
int main() {
return f();
}
在不同的地方有三个与名称a
相关联的独立静态变量。编译器和链接器的工作是安排将正确的存储与每个变量引用相关联。