将初始值设置为 c 中结构的字段? [复制]

Posted

技术标签:

【中文标题】将初始值设置为 c 中结构的字段? [复制]【英文标题】:Set initial values to fields of a struct in c ? [duplicate] 【发布时间】:2012-07-26 20:12:06 【问题描述】:

可能重复:How to initialize a struct in ANSI C

我的代码中有一个全局变量带有初始值,它们是:

int init = 0;
int flag = FALSE;
sem_t *mutex;
char * ptr1 = NULL;
char * ptr2 = NULL;
int status1 = -10;
int status2 = -10;
int semaphoreFlag = FALSE;

相反,我决定添加一个结构:

struct PipeShm

    int init;
    int flag;
    sem_t *mutex;
    char * ptr1;
    char * ptr2;
    int status1;
    int status2;
    int semaphoreFlag;
;

但是,我无法为结构的字段设置初始值,就像我在 变量是全局变量。

我想通常的方法是使用void init() 方法 这会将结构的值设置为请求的值......但我正在寻找其他东西......有什么办法吗?

谢谢

【问题讨论】:

【参考方案1】:

除了@DCoder 建议的解决方案之外,您还可以使用该结构实例化和初始化一个变量,如下所示:

struct PipeShm

    int init;
    int flag;
    sem_t *mutex;
    char * ptr1;
    char * ptr2;
    int status1;
    int status2;
    int semaphoreFlag;
 defaults = 
    .init = 0,
    .flag = 0,
    .mutex = NULL,
    .ptr1 = NULL,
    .ptr2 = NULL,
    .status1 = 0,
    .status2 = 0,
    .semaphoreFlag = 0
;

【讨论】:

以上是关于将初始值设置为 c 中结构的字段? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

我想将初始值设置为也设置为自动增量选项的主键,例如它从 mysql 中的值 7899 开始? [复制]

C++结构体如何设置默认值?

C结构未初始化的外部构造函数

在目标 c 中使用 jsonModel 映射时将默认值设置为空字段

mysql自动增加的字段怎么设置初始值

表单初始化后Django设置字段值