如何在 C 中初始化结构体中的 const 变量?
结构
struct Tree{
struct Node *root;
struct Node NIL_t;
struct Node * const NIL; //sentinel
}
我写了一个我想要的
struct Node * const NIL = &NIL_t;
,但无法在结构内初始化它。 我用的是msvs
我使用 C,而不是 C++。 我知道我可以在 C++ 中使用初始化列表。
在C中如何做到这一点?
I write a struct
struct Tree{
struct Node *root;
struct Node NIL_t;
struct Node * const NIL; //sentinel
}
I want
struct Node * const NIL = &NIL_t;
I can't initialize it inside the struct.
I'm using msvs.
I use C, NOT C++.
I know I can use initialization list in C++.
How to do so in C?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
如果您使用的是 C99,则可以使用指定的初始值设定项来执行此操作:
但这仅适用于 C99。我已经在 gcc 上测试过它,它似乎工作得很好。
If you are using C99, you can used designated initializers to do this:
This only works in C99, though. I've tested this on gcc and it seems to work just fine.
对于那些寻求简单示例的人,如下所示:
产生以下输出:
For those seeking a simple example, here it goes:
Produces the following output:
结构定义了数据模板,但本身没有数据。由于它没有数据,因此无法对其进行初始化。
另一方面,如果您想声明一个实例,则可以对其进行初始化。
A structure defines a data template but has no data itself. Since it has no data, there's no way to initialize it.
On the other hand, if you want to declare an instance, you can initialize that.
也许这样的东西就足够了?
Maybe something like this will suffice?