struct node *tempNode = (struct node*) malloc(sizeof(struct node));
//and
struct node *tempNode = malloc(sizeof(struct node));发布于 2016-11-23 02:53:53
struct node *tempNode = (struct node*) malloc(sizeof(struct node));您正在为节点指针tempNode动态分配空间,并将其类型转换为struct node*类型。(指向结构的指针)
struct node *tempNode = malloc(sizeof(struct node));与上面相同,除了没有显式类型转换(struct node*)
发布于 2016-11-23 02:56:19
这是没有区别的。由于malloc返回类型void *,因此可以将其赋给任何指针类型的变量,而无需强制转换。正如John Bode所提到的,强制转换malloc的结果被认为是不好的做法,因为它可能会掩盖由于具有malloc的其他定义而导致的编译器错误。
发布于 2016-11-23 02:56:19
既然你的造型是正确的,那么两者之间就没有区别。
但在C中,这种强制转换通常是不受欢迎的,因为void*可以隐式转换为任何其他(数据)指针类型。
另请参阅以下C常见问题条目:What's wrong with casting malloc's return value?
第三个在那里:
struct node *tempNode = malloc(sizeof *tempNode);这是更好的,因为它使得在类型改变的情况下改变较少。
https://stackoverflow.com/questions/40749479
复制相似问题