初始化Malloc'ed结构

时间:2015-07-15 23:25:59

标签: c malloc structure

我正在尝试使用大括号初始化一个结构,但我真的试图初始化从malloc调用返回的指针所指向的结构。

typedef struct foo{
    int x;
    int y;
} foo;

foo bar = {5,6};

我理解如何做到这一点,但我需要在这种情况下这样做。

foo * bar = malloc(sizeof(foo));
*bar = {3,4};

2 个答案:

答案 0 :(得分:6)

(这已在评论中得到解答,因此将其作为CW)。

您需要投射作业的右侧,如下所示:

*bar = (foo) {3,4};

正如@cremno在评论中指出的那样,这不是演员,而是复合文字的分配

C99标准的相关部分是: 6.5.2.5复合文字,其中包含:

  

由带括号的类型名称组成的后缀表达式   后面跟一个括号括起来的初始化列表是一个化合物   文字。它提供了一个未命名的对象,其值由   初始化列表

答案 1 :(得分:1)

bar是一个指针,用于保存对malloced foo struct

的引用

使用bar->x=3;bar->y=4