C数据段标识

C data segment identification

如果我声明

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

所以现在有两个实例..

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

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

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 关联的独立静态变量。安排正确的存储与每个变量引用相关联是编译器和链接器的工作。