C数据段识别

时间:2015-01-30 17:41:44

标签: c static data-segment

如果我宣布

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

所以现在有两个实例..

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

1 个答案:

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