gpt4 book ai didi

c - 如何在C双向链表中分配指针基本问题

转载 作者:太空宇宙 更新时间:2023-11-04 06:41:55 24 4
gpt4 key购买 nike

很抱歉问了一个基本问题,我正在学习 C,我对为列表赋值感到困惑。我对突然出现在我脑海中的自己的问题感到困惑.. :(

例如,我在下面有一个结构

typedef struct {
int value_in_use;
} structA;

typedef struct structB {
structA conn;
struct structB *next, *prev;
} structB

typedef struct {
structB *head, *tail;
} structC;

并且我想将“value_in_use”的值赋值为 1。据我所知,我完全感到困惑,在列表中,我需要先从头开始遍历(StructC),然后我需要进入内部列表,直到我进入 structA 并为其赋值。所以像

 structC *C = NULL;
C = (structC *) malloc(sizeof(structC));
int assign=1;
&C->structB.head->conn.value_in_use=assign;

同时,我在想其实我可以直接给structA赋一个指针,然后给它赋值。所以我只能说

structA *ue = NULL;
ue = (structA *) malloc(sizeof(structA));
ue->value_in_use = 100;

在第一部分和第二部分中,在运行时分配列表的值有何不同?我相信我可以将两者都用于分配值(或?)..

非常感谢您与我分享您的知识。

最佳答案

第一个实际上不会起作用。您正试图跟随 C 中的头指针,但您不知道该指针指向何处(即 malloc 不是递归的)。

对于第一种情况,您需要执行以下操作:

structC * c = malloc(sizeof(structC));
structB * b = malloc(sizeof(structB));
c->head = b;
c->tail = b;
b->next = NULL;
b->prev = NULL;
c->head->conn.value_in_use = 1;

请注意,我们不必单独分配一个 structA,因为 B 中嵌入了一个。

关于c - 如何在C双向链表中分配指针基本问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6652533/

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