C中静态结构的成员变量

7 c static struct member

我有一个关于C语言中静态结构的成员变量的问题.

有人说我们可以声明一个static struct,但是在C中,struct没有像C++中的类那样的静态成员,这是什么意思?如果我声明一个静态结构,那么成员变量的状态是什么?有人可以帮我吗?

小智 9

请注意,静态结构本身与结构的静态成员不同.虽然您可以声明一个静态结构变量:

static struct MyStruct s;
Run Code Online (Sandbox Code Playgroud)

您无法使用静态成员定义结构类型:

struct MyStruct {
    static int i; // <- compiler error
};
Run Code Online (Sandbox Code Playgroud)

这样做的原因是在C中,struct是一种类型 - 声明一种类型,其成员变量总是相同的实例(即静态),对于该类型的多个实例来说,这只是无意义的.在C++中,结构体实际上是类(它们仅在成员的默认可见范围内不同),而在C++中,静态关键字在这种情况下意味着其他东西.它意味着一个类方法 - 但由于C没有类和方法,因此这没有意义,在C中无效.

获得的经验:C++不是C.

  • *C++不是C*的严格超集这是真的,但是你的例子没有提供参数.要证明"C++"不是超集,你需要在C语言中提供一些在C++中不可能的东西,而不是相反. (3认同)
  • 那是事情.根据你的回答,C++有一个用于`static`的用法,而C则没有.这证明C不是C++的超集.但另一种方式仍然存在问题. (2认同)