我写了一个结构体
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中做到这一点?
发布于 2011-01-13 10:08:22
如果您使用的是C99,您可以使用指定的初始化器来执行此操作:
struct Tree t = { .root = NULL, .NIL = &t.NIL_t };不过,这只适用于C99。我已经在gcc上测试过了,它似乎工作得很好。
发布于 2011-01-13 09:59:09
结构定义了数据模板,但本身没有数据。因为它没有数据,所以没有办法初始化它。
另一方面,如果你想声明一个实例,你可以初始化它。
struct Tree t = { NULL, NULL, NULL };发布于 2019-07-02 17:51:49
对于那些正在寻找简单示例的人,它是这样的:
#include <stdio.h>
typedef struct {
const int a;
const int b;
} my_t;
int main() {
my_t s = { .a = 10, .b = 20 };
printf("{ a: %d, b: %d }", s.a, s.b);
}生成以下输出:
{ a: 10, b: 20 }https://stackoverflow.com/questions/4676047
复制相似问题