如何从不同结构的变量中引用结构的值?

How to reference values of structure from variable of a different structure?

抱歉,如果标题有点混乱,作为 C 的初学者,我真的不知道怎么说。所以我试图创建一个单链表,其中每个节点不仅有一个指向下一个节点的指针,还有一个指向从该节点开始的 sub-linkedlist 的指针。基本上每个节点都有自己的链表。在尝试创建此 LL 时,我得到了一个结构,其中包含每个节点应具有的特征,例如指向下一个节点的指针和指向源自它的数据链表的指针。我听说您实际上能够创建结构的结构。我想创建第二个结构来构造节点所持有的数据类型:

struct NODE{
    void* data;
    struct Node* next;
}NODE;

typedef struct stuff{
    int data1;
    int data2;
    int data3;
}STUFF;

我现在的问题是,如果说我有一个来自 struct NODE 的节点,如“NODE* 节点”,我将如何引用该节点的数据类型(data1、data2 等)?我尝试过转换,但不确定我是否做错了,但像这样:

(STUFF)node->data1= DATA1; 
//where DATA1 is of course already defined to be some int

我在函数内部执行此操作,但收到错误消息“转换赋值是非法的,不支持左值转换”。

关于你的转换问题...这是你可以如何做到的。

typedef struct Node{
    void* data;
    struct Node* next;
}NODE;

typedef struct stuff{
    int data1;
    int data2;
    int data3;
}STUFF;

int main()
{
    NODE *n = malloc(sizeof(NODE));
    n->data = malloc(sizeof(STUFF));
    STUFF *s = n->data;
    s->data1 = 15;
    printf("%d", ((STUFF*) n->data)->data1);
    return 0;
}