经过一番折腾并尝试学习如何完成这项工作后,我认为是时候询问专家了。
我有多个结构,并且希望仅使用一个节点“操作”其中的数据。
最好的方法是什么?
代码示例:
typedef struct printQuality{ int dpi; } quality ;
typedef struct paperSize{ char* dim; } sizes ; //this would be A3 , A4 this is why i picked char
typedef struct printColour{ char* color; } colors;
typedef struct printStyle{ char* side; } sides;
typedef struct printOrientation { char* orientation; } orientations;
typedef union printOptions{
quality dpi;
sizes size;
colors color;
sides side;
orientations orientation;
} options;
struct optNode{
options* inf;
optNode* next;
optNode* prev;
};
最佳答案
根据您的评论,我认为您的问题与 C 中的 Union 与结构中的行为有关。在 C/C++ 中, union 是一种在给定时间只能实例化其值之一的结构。通过 printOptions union ,您有 5 个变量。在任何给定时间,只有其中一个变量(您设置的最后一个)可以保证保存一个值。这是一篇关于 union 如何运作的好文章:https://www.programiz.com/c-programming/c-unions 。 C/C++ 中的结构没有这种行为。无论您设置哪个值,都将保持设置状态,直到结构的实例超出范围或被删除。我认为如果您将 printOptions 设置为一个结构,您将能够从 optNodes 中的选项指针访问所有其他结构。
关于C 多结构体只有一个节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44165742/