gpt4 book ai didi

c - Ref/DeRef 双点链接列表

转载 作者:行者123 更新时间:2023-11-30 14:47:57 25 4
gpt4 key购买 nike

我正在传递一个链表,其中包含另一个链表到一个函数,但我在从传递的双指针中取消/引用内部链表时遇到问题。 push(*config->inner_linked_list... 行的编译器错误是 '*config' 是一个指针;您是否打算使用 '->'。在 main &config->inner_linked_list 内部工作正常。我似乎无法弄清楚我需要在这里使用哪种类型的 ref/deref。

typedef struct new_inner {
wchar_t setting[10];
wchar_t val[10];
struct new_inner * next;
}INTLL_t ;

typedef struct new_head {
wchar_t name[10];
struct INTLL_t * inner_linked_list;
struct new_head * next;
} HEAD_t;




// In Main
int main(){
...
HEAD_t * config;
config = malloc(sizeof(HEAD_t));
config = NULL;

//config populated elsewhere

functo1(&config);
...
}


BOOL functo1(HEAD_t ** config){
HEAD_t * current = *config;
while(current != NULL){

INTLL_t * s = another_ll; // Also INTLL_t
while(s != NULL){


push(*config->inner_linked_list, another_ll->setting,another_ll->val);
s = s->next;
}

current = current->next;
}

return TRUE;
}

最佳答案

    struct INTLL_t * inner_linked_list;

struct INTLL_t 是未定义的类型。它与 INTLL_t (这是一个 typedef,而不是一个结构体)无关。您可能指的是 INTLL_t *struct new_inner *

    HEAD_t * config;
config = malloc(sizeof(NODE_t));
config = NULL;

这是内存泄漏。您刚刚丢失了指向 malloc 返回的 block 的唯一指针。此外,NODE_t 未定义。无论如何,它应该是 config = malloc(sizeof (HEAD_t)) 或(最好)config = malloc(sizeof *config)

BOOL functo1(HEAD_t ** config){

BOOL 未定义。

    NODE_t * s = another_ll;

NODE_tanother_ll 均未定义。

    push(*config->inner_linked_list, another_ll->setting,another_ll->val);

push 未定义。

config 是一个指向结构体的指针。 *a->b 解析为 *(a->b),这要求 a 是一个指向结构体的指针,该结构体的 b 成员也是一个指针(它相当于 *((*a).b))。您需要使用 (*config)->inner_linked_list (或等效的 (**config).inner_linked_list)。

return TRUE;

TRUE 未定义。

关于c - Ref/DeRef 双点链接列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50867168/

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