C中的结构初始化问题

Mah*_*pta 1 c linked-list

我正在用C编写一个"Set"数据结构的程序.

当Set的一个实例存在时它工作正常,但是当存在Set的两个实例时它不起作用.

当候选者是第一个元素时,我删除元素的代码也不起作用.

有人能帮我吗?

这是代码:

Mac*_*tka 5

首先,您将指针传递给value by value.即代替

void Set_Create (Set* set) {
     set = malloc(...); // Malloc here leads to memory-leak.
     //...
}

int main() {
     Set *set; // Some value like 0xdeadbeef pointing somewhere
     Set_Create (set);
     // set have still undefined value
}
Run Code Online (Sandbox Code Playgroud)

使用

Set *Set_Create () {
     Set *set = malloc(...);
     /// ...
     return set;
}

int main() {
     Set *set; // Some value like 0xdeadbeef pointing somewhere
     set = Set_Create ();
     // set point to new memory
}
Run Code Online (Sandbox Code Playgroud)

要么:

void Set_Create (Set *set) {
     // No malloc
     /// ...
     return set;
}

int main() {
     Set set; // Create on stack
     Set_Create (&set); // Initialize
     // ...
}
Run Code Online (Sandbox Code Playgroud)

我建议重新阅读关于指针的章节(不要担心 - 它们被认为很难,但它们对于C程序员来说是必须的).