gpt4 book ai didi

c - C 中的数据结构指针处理

转载 作者:行者123 更新时间:2023-11-30 17:52:20 25 4
gpt4 key购买 nike

我有一个这样的结构;

struct abc
{
char bbb[10];
char ccc[4];
char ddd[6];
int i1;
int i2;
struct abc *prior, *next;
};
struct abb *start, *last, *this, *temp;

我有很多代码使用这些指针 start、last 等,所以我想使用它们,但我想添加指向结构的指针和结构内的指针来完成以下任务:用数据加载结构,然后根据 i1 的值,例如,当 i1 的值 = 0 或 i1 的值 = 1 时显示和更改数据,或者无论 i1 的值如何,都显示和更改结构的内容。并且,在一天结束时,将整个结构保存到文件中,并在三个条件中的任何一个条件下进行更改。我想添加如下指针:

    struct abc *prior1, *next1;
struct abc *prior2, *next2;
};
struct abb *start1, *last1...etc.
struct abb *start2, *last2...etc.

我可以拥有:

start = start1;
last = last1;

但是我该如何引用

prior1
next1

或者告诉我更好的方法。

最佳答案

听起来您是在寻求有关序列化策略的建议。我建议编写免费的operator<<和operator>>方法来处理结构上的I/O,其中指针在分配升序<的ma​​p中引用每个的强>数字ID值。写入时,在访问每个结构体指针时,您检查映射,如果找到 ID,则只需写出 ID,而不写出其他内容。否则,将下一个可用 ID 添加到映射中,将该 ID 分配给指针,然后写出整个结构。读取时,您可以反转该过程,读取每个 ID 并在映射中查找该指针。如果未找到,则您拥有第一个实例,因此您继续读取整个结构并将其存储在映射中。否则,您从映射中检索先前读取的结构并分配指针。 CArchive 序列化(Microsoft 基础类)使用此一般策略。可能有一些开源库可以做同样的事情。

关于c - C 中的数据结构指针处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16287268/

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