在.c文件中,为什么struct node * = void *会赋值成功?

在使用链表时,创建一个.c文件,来执行

struct node *p = malloc(sizeof(struct node));

这个语句的时候,就不会报错。

而创建.cpp文件时,执行这条语句,就会报错说不能将void*赋给struct node*。

按理说malloc返回值是void*,的确不能直接给p赋值的,而应该强制转换为struct node*。如struct node *p = (struct node*)malloc(sizeof(struct node));

C和C++在类型这方面的区别有些不是很理解,哪位大神能解释一下?

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 以帮助更多的人 ^-^