在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;
然后a
和b
将各自拥有自己的x
但会共享一个共同的y
。 静态成员函数也是如此。
但是就像所说的那样,这不适用于C.但它确实适用于C ++和Java。
你不能在structure
使用static
说明符……
structure
变量不能在structure
内初始化, static
说明符将变量初始化为0。
C中不允许这种行为。
关于编译编译器抛出错误; 因为每当编译器遇到静态关键字时,它就会生成用于初始化(零或显式指定值)数据段或BSS段中的静态变量的代码。 在我们的场景中,不会为结构声明分配内存,因此编译器会抛出错误。