在C中,如果我在局部结构中声明一个静态变量,那么静态变量放在哪里? 由于struct在堆栈中,静态变量也会在堆栈中吗?
答案 0 :(得分:10)
如果我在本地结构中声明一个静态变量
在当前的C 中,关键字static
在结构中没有意义。你应该从编译器得到一个错误。
如果用“static”表示“未使用malloc分配”:结构的成员总是存储在与结构其余部分相同的位置。如果所述成员是指针,则它可以指向同一区域中的内存。
答案 1 :(得分:3)
在C ++中,静态变量将在您第一次使用它们的类时初始化。在C中,它们是不允许的,因为C编译器需要将整个结构存储在相同类型的内存中。关于他们的存储,请参阅Where are static variables stored (in C/C++)?