首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在C中初始化结构中的常量变量?

如何在C中初始化结构中的常量变量?
EN

Stack Overflow用户
提问于 2011-01-13 09:51:01
回答 4查看 26K关注 0票数 14

我写了一个结构体

代码语言:javascript
复制
struct Tree{
    struct Node *root;
    struct Node NIL_t;
    struct Node * const NIL;    //sentinel
}

我想要

代码语言:javascript
复制
struct Node * const NIL = &NIL_t;

我不能在结构中初始化它。我用的是msvs。

我使用C,而不是C++。我知道我可以在C++中使用初始化列表。

如何在C中做到这一点?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-01-13 10:08:22

如果您使用的是C99,您可以使用指定的初始化器来执行此操作:

代码语言:javascript
复制
struct Tree t = { .root = NULL, .NIL = &t.NIL_t };

不过,这只适用于C99。我已经在gcc上测试过了,它似乎工作得很好。

票数 24
EN

Stack Overflow用户

发布于 2011-01-13 09:59:09

结构定义了数据模板,但本身没有数据。因为它没有数据,所以没有办法初始化它。

另一方面,如果你想声明一个实例,你可以初始化它。

代码语言:javascript
复制
struct Tree t = { NULL, NULL, NULL };
票数 1
EN

Stack Overflow用户

发布于 2019-07-02 17:51:49

对于那些正在寻找简单示例的人,它是这样的:

代码语言:javascript
复制
#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);
}

生成以下输出:

代码语言:javascript
复制
{ a: 10, b: 20 }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4676047

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档