c - 静态变量存储说明

标签 c static compiler-construction initialization

静态变量存储在程序的数据段中,不像自动变量存储在堆栈部分中。 假设我编写如下代码。

#include <stdio.h>
void temp();
int main()
{
    static int a=10;
    temp();
    return 0;
}
void temp()
{
    static int a=20;
}

在 2 个函数中定义了相同的静态变量名称。在数据段布局中,将有 2 个具有相同名称的变量。 这不会在编译/执行时造成混淆吗?目前如何避免这种情况?

最佳答案

这两个静态变量具有不同的作用域,因此它们不会冲突,static 是定义存储变量的位置的存储类。它与变量范围无关。

In data segment layout there will be 2 variables with same name

数据段中没有任何命名,变量只是通过它们的地址来标识,而不是名称

关于c - 静态变量存储说明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41165376/

相关文章:

c - 调试 C 中的断言错误

C++结构重新定义编译器错误

c - yylineno 给出错误报告的意外结果

java - 来自 servlet 的静态方法

c# - Doxygen 没有记录静态类?

java - 访问静态最终实例变量进入静态方法错误

compiler-construction - 可以并行模式运行其组件的编译器

c - 什么可能会延迟我的 select() 调用?

c++ - C/C++ 结构中字段的顺序

c# - PInvokeStackImbalance 不是由 CallingConvention 引起的