在C中的结构中使用“static”

在C结构中拥有“静态”成员是否合法?

例如

struct my_struct { int x; static int y; }; 

如果它确实合法,那么使用“静态”关键字有什么含义?

不,这在C中没有任何意义。但它在C ++中是有效的。

不,不是在C

(您可以在C++结构中拥有静态成员。)

您可能会对Static不会出现与Java或C#(或C ++)等语言相同的目的感到困惑。 这篇文章彻底解释了C对静态的使用:

“静态”是什么意思?

看起来你在询问静态成员背后的直觉。 静态成员表示每个类型一个而不是每个实例一个。 在你的情况下,如果你有

 struct my_struct a, b; 

然后ab将各自拥有自己的x但会共享一个共同的y 。 静态成员函数也是如此。

但是就像所说的那样,这不适用于C.但它确实适用于C ++和Java。

你不能在structure使用static说明符……

structure变量不能在structure内初始化, static说明符将变量初始化为0。

C中不允许这种行为。

关于编译编译器抛出错误; 因为每当编译器遇到静态关键字时,它就会生成用于初始化(零或显式指定值)数据段或BSS段中的静态变量的代码。 在我们的场景中,不会为结构声明分配内存,因此编译器会抛出错误。