【发布时间】:2013-03-12 10:05:48
【问题描述】:
我想知道这之间是否有真正的区别:
c = (struct_t *) malloc(sizeof(struct_t));
还有这个
c = malloc(sizeof(struct_t *));
除了避免强制转换之外,编译器在第二种形式方面是否利用了第一种形式?或者这两种方式完全一样,只是一个“审美”的问题?
【问题讨论】:
-
hmmm...我有一个
typedef struct struct_t { .... } struct_t;,我声明struct_t * c; -
啊,好吧。你是对的。第二种形式可能是:
c = malloc(sizeof(*c));。不是吗? -
@Kyrol 使用
c = malloc(sizeof(struct_t));并忘记其他情况,它们可能对您尝试做的事情没有意义。 -
所以我只能避免演员阵容。对?但是您确定如果我将 c 声明为指针,那么您的形式是正确的吗?我想知道为什么是正确的。 :)
标签: c compiler-construction casting malloc