如何从不同结构的变量中引用结构的值?
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;
}
抱歉,如果标题有点混乱,作为 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;
}