C 编程语言等效于 C++ 中的结构初始化
Posted
技术标签:
【中文标题】C 编程语言等效于 C++ 中的结构初始化【英文标题】:C programming language equivalent for structure initialization in C++ 【发布时间】:2019-10-13 21:10:21 【问题描述】:假设列表是某种结构
list *temp;
temp = new list;
以上是 c++ 中的,这在 C 中是否有等价物?
【问题讨论】:
没有真正的方法可以实现这一点,因为 c 不是面向对象的,所以你不能有构造函数,但你可以创建初始化结构的函数并像构造函数一样返回其指针 在 C 中,我会这样做:list* temp; temp = malloc(sizeof(list)); list_init(temp);
我喜欢list *temp = malloc(sizeof *temp);
。这样,如果您将其从列表更改为其他内容,则需要更改的代码更少,而且通常更不容易出错。
【参考方案1】:
list *temp;
temp = malloc(sizeof(list));
[...]
free(temp);
C 没有new
关键字——你必须手动分配和释放你想要使用的内存。 new
也做了一些 work behind the scenes,比如调用构造函数并返回正确的指针类型 - malloc
没有涵盖这些,必须由程序员处理。
【讨论】:
不要在 C 中强制转换 malloc 的返回值。 您的评论将我引至this answer;我学到了一些新东西。谢谢!以上是关于C 编程语言等效于 C++ 中的结构初始化的主要内容,如果未能解决你的问题,请参考以下文章