C 多结构体只有一个节点

标签 c data-structures struct nodes

经过一番折腾并尝试学习如何完成这项工作后,我认为是时候询问专家了。

我有多个结构,并且希望仅使用一个节点“操作”其中的数据。

最好的方法是什么?

代码示例:

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/

相关文章:

C编程循环需要解释吗

arrays - 复制相同类型的数组

c# - 如何在 C# 中创建一个真正不可变的双向链表?

data-structures - "sums-and-products"数据结构是什么?

C链表: head is changing

c++ - 相互依赖的本地类(或相互递归的 lambda)

C - 删除空格

c++ - 线程安全和位域

c++ - 关于 C++ 中结构的模板

c - 在 if 语句中分配 fopen 的结果