【发布时间】:2010-10-31 11:41:19
【问题描述】:
我想问一下下面的案例:
char *temp;
temp = malloc(10);
由于malloc的返回类型是void*,那么malloc返回的指针在赋值给temp之前是否会隐式转换为char*类型?标准对此有何规定?
如果我们的指针变量是某种结构类型,例如:
struct node *temp;
temp = (struct node *)malloc(sizeof(struct node));
如果我们将内存分配给 temp 而不将其转换为 struct node* 类型,它会隐式转换为 struct node* 类型还是需要显式转换为 struct node* 类型?
【问题讨论】:
-
如果您可能需要使用 C++ 编译器而不是 C 编译器来编译代码,则需要进行强制转换。因此,我的大部分代码都包含显式转换——即使纯 C 不需要它。我通常用 /*=C++=*/ 标记它来说明原因。
-
虽然没有必要,但对我来说可以帮助我稍后阅读代码,而且不会很冗长。