0

如果我声明

  static int a ;// globally and 
  static int a ; // locally in one function 

所以现在有两个实例 a ..

我知道所有静态变量都进入数据段,但是它们在数据段中如何区分哪个是本地的,哪个是全局的?

4

1 回答 1

1

事实上,你可以走得更远:你可以声明

static int a;

在对您的程序有贡献的两个或多个单独文件中的文件范围内。不同范围内的每个此类声明都声明了一个单独的变量。因此,给定

fc:

static int a;

int f() {
    static int a;
    return 0;
}

主程序

static int a;

int f(void);

int main() {
    return f();
}

a在不同的地方有三个独立的静态变量与名称相关联。编译器和链接器的工作是安排与每个变量引用关联的正确存储。

于 2015-01-30T18:02:52.577 回答