为什么我们不能在C编程语言中的结构中声明静态变量?

时间:2010-09-19 07:36:45

标签: c

为什么我们不能在C编程语言中的结构中声明静态变量?

4 个答案:

答案 0 :(得分:12)

在C ++中,struct基本上是一个所有成员都是public的类,所以静态变量在那里很有意义。

在C中,struct是一个带有字段的连续内存块。如果不改变它就不能创建静态变量(为了实现一个静态,你需要从该类型的所有结构中引用一个单独的内存位置),这将是复杂性的一个巨大差异而没有太大的好处。

答案 1 :(得分:4)

因为C不是C ++。

因为C标准不允许。

因为它在C中没有有意义的解释。

答案 2 :(得分:1)

静态变量不应在结构内部声明。原因是C编译器要求将整个结构元素放在一起(即,结构成员的内存分配应该是连续的)。可以在函数内部声明结构(堆栈段)或动态分配内存(堆段),甚至可以是全局的(BSS或数据段)。无论哪种情况,所有结构成员都应驻留在同一内存段中,因为结构元素的值是通过计算元素相对于结构起始地址的偏移量来获取的。单独将一个成员分离到数据段中会破坏静态变量的目的。

可能有一个完整的静态结构。

引用:https://en.wikipedia.org/wiki/Static_(keyword)

答案 3 :(得分:0)

因为在c中我们无法使用结构名称访问静态变量。 在c ++中,我们可以使用类名访问静态成员变量,如下所示。

类名:: staticVariableName

' C'结构不提供这样的设施。