gpt4 book ai didi

c - C 中的不透明数据类型

转载 作者:行者123 更新时间:2023-12-03 20:26:08 28 4
gpt4 key购买 nike

在 C 中返回不透明数据类型的首选方式是什么?

/* Option #1: */
struct widget;
struct widget *foo();

/* Option #2: */
struct widget
{
struct widget_impl *impl;
};
struct widget foo();

是否还有其他更惯用的选项?

最佳答案

这是一个很好的问题,没有正确答案,两个选项的结果相同,但根据我的经验,选项 1 更常见。

差异:

选项 1 在您的环境中的指针大小最小,因此空间效率更高。请注意“最小”的提及。如果你的包装器结构 widget 中有额外的字段包含其他有用的信息,那么在 foo 中不返回指向 struct widget 的指针将变得非常极端空间效率低下。

实际用途:

当您只处理一种结构时,使用选项 1。例如,实现一个结构来保存欧几里德平面上的一个点,或者实现一个动态数组。

在实现 ADT 时可以看到选项 2。您通常需要一个包装器结构来包含额外的字段,因此隐式使用选项 2。

关于c - C 中的不透明数据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18227081/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com