如何在 C 中正确存储结构
Posted
技术标签:
【中文标题】如何在 C 中正确存储结构【英文标题】:How do you properly store structures in C 【发布时间】:2021-11-27 02:50:56 【问题描述】:正如标题所示,我试图在 C 中存储一个结构,但想找到最有效的方法。答案当然取决于存储的数据对吗?
我知道链表和双向链表,但我正在使用元素周期表,它包含 118 个元素,每个元素有 29 个唯一字段,我不知道链表是否必要。目前,我已经测试了将一些元素和 4 个特征存储到结构数组中。有整数、浮点数和字符串。
element[0] - atomicNumber: 1 element: Hydrogen symbol: H atomicMass: 1.0070
element[1] - atomicNumber: 2 element: Helium symbol: He atomicMass: 4.0020
element[2] - atomicNumber: 3 element: Lithium symbol: Li atomicMass: 6.9410
element[3] - atomicNumber: 4 element: Beryllium symbol: Be atomicMass: 9.0120
那么,有没有人有任何见解可以帮助指导我?
【问题讨论】:
您尝试解决的问题远比您处理的数据类型更重要。话虽如此,这仍然很可能是一个意见问题。 “最高效”是为了什么?内存使用情况?复杂?插入?删除?抬头?计算通常涉及权衡,因此在做出设计决策时需要指定确切的要求。 你打算如何处理这些数据?您想知道链表是否甚至是必要的,但到目前为止,您比我们处于更好的判断位置。另一方面,无论如何,链表很少是答案。 如果您要从集合中添加和删除项目,链接列表会很有用。但是如果它是一个固定大小的集合,那么数组通常是合适的。 您甚至可以考虑使用小型数据库,例如SQLite。 【参考方案1】:这取决于存储的数据,也取决于您想要使用它的方式。 一个通用指针:如果您确切知道会有多少元素,那么固定大小的数组通常是个好主意。
struct Element
int atomicNr;
char symbol;
// etc
;
Element elements[] =
.atomicNr = 1,
.symbol = 'H',
,
// etc
;
您甚至可以摆脱 atomicNr 并为此使用数组索引。
【讨论】:
谢谢伍兹。这就是我目前正在做的事情。如果你不能告诉我我是一个新手/初学者,甚至不知道要问什么问题或如何思考创造有用的东西。以上是关于如何在 C 中正确存储结构的主要内容,如果未能解决你的问题,请参考以下文章