【发布时间】:2023-03-12 04:30:01
【问题描述】:
有没有一种很好的方法可以将 C99 中的指定初始化程序与 malloc 的结果结合起来?
以下似乎有不必要的重复:
typedef struct {
int a, b, c;
} Type;
Type *t = malloc(sizeof *t);
*t = (Type) {
.a = 2,
.b = 3,
.c = 5,
};
上述代码中Type和*t的使用能否去掉?
【问题讨论】:
-
如果可以,如果
malloc返回NULL会发生什么? -
看起来你真的想要 C++。
-
有趣的问题,但我认为没有什么好的答案。就我个人而言,我只会使用
calloc,然后是t->a=2; t->b=3;...(calloc只是在你想省略任何成员的情况下,所以如果你知道你会明确设置它们,你可以使用@987654330 @也一样)
标签: c malloc c99 designated-initializer