首页 > 解决方案 > 使用 malloc 初始化结构

问题描述

要创建结构,我可以执行以下操作之一:

// Method 1
Item *item = malloc(sizeof(Item));
Item _item = {.name="job"};
item = &_item;

// Method 2
Item *item = malloc(sizeof(Item));
item->name="job";

有没有更简单的方法来做到这一点?也许是这样的:

malloc(sizeof(Item)) & (Item) {.name="job"}

以下是两种方法:https ://godbolt.org/z/MfYGW3

标签: c

解决方案


使用复合文字:

Item *item = malloc(sizeof *item);
*item = (Item) {
    .name = "job",
};

您的第一种方法是不正确的(即使没有错字),因为您只是丢弃了刚刚malloc编辑的内存。你想写Item = _item;


推荐阅读