【问题标题】:where is a static variable inside a struct located?结构内的静态变量在哪里?
【发布时间】:2012-04-03 07:23:47
【问题描述】:

在 C 中,如果我在局部结构中声明一个静态变量,静态变量放在哪里? 既然结构体在栈中,那么静态变量也会在栈中吗?

【问题讨论】:

  • 虽然Q被标记为c,但我觉得迫切需要问在什么语言c或c++中?static结构成员在c中没有意义,不像c++。
  • 是的。抱歉,虽然我在 C 下标记了它,但我没有提到它。
  • 如果你的意图是 C 和 C++,那么重新标记它并添加一个说明。

标签: c static struct


【解决方案1】:

如果我在局部结构中声明一个静态变量

在当前的 C 关键字static 在结构中没有意义。你应该从编译器中得到一个错误。


如果“静态”是指“未使用 malloc 分配”:结构的成员始终与结构的其余部分存储在同一位置。如果该成员是一个指针,它可以指向同一区域的内存,也可以不指向。

【讨论】:

  • “静态”俳句:精彩static;关键字、对象生命周期、范围;远远超过auto
  • @MichaelBurr Awesomeness:-)) 是你自己的吗?
【解决方案2】:

在 C++ 中,静态变量将在您第一次使用它们的类时被初始化。在 C 中它们是不允许的,因为 C 编译器需要将整个结构存储在相同类型的内存中。关于他们的存储请参阅Where are static variables stored (in C/C++)?

【讨论】:

    猜你喜欢
    • 2011-12-12
    • 1970-01-01
    • 2021-08-17
    • 1970-01-01
    • 2018-03-21
    • 2015-11-03
    • 1970-01-01
    • 2012-01-13
    相关资源
    最近更新 更多