C++中结构体初始化的C语言等效方法

3

假设list是某种数据结构

list *temp;
temp = new list;

上面的代码是C++的,那么在C语言中有相应的等价物吗?


由于C语言不是面向对象的,因此没有真正的方法来实现这一点。你不能有构造函数,但可以创建初始化结构体并返回其指针的函数,就像构造函数一样。 - midugh
1
在 C 语言中,我会这样做:list* temp; temp = malloc(sizeof(list)); list_init(temp); - Eljay
我喜欢使用 list *temp = malloc(sizeof *temp); 这种方式。这样,如果你将其从列表更改为其他类型,需要更改的代码就会更少,并且通常更不容易出错。 - Shawn
1个回答

5
list *temp;
temp = malloc(sizeof(list));

[...]

free(temp);

C语言没有new关键字 - 你必须手动分配和释放想要使用的内存。 new还会在后台执行一些工作,例如调用构造函数并返回适当的指针类型 - malloc不包含这些内容,需要由程序员处理。


4
不要在C语言中将malloc的返回值进行强制类型转换。 - NathanOliver
你的评论引导我到了这个答案,我学到了新东西。谢谢! - Nick Reed

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接