一段时间以来,我一直在尝试在 C 中创建一个链表,并且也设法做到了。现在我试图将我的全局指针/变量替换为本地指针/变量,以便在函数之间传递我的结构。问题是,我对这个主题阅读得越多,对它进行的实验越多,我收到的错误和爆炸就越多。
由于我的代码有点长(100 行),我将尝试解释它在做什么以及如何做。
我已经宣布了一个结构:
struct node {
char Name[21];
struct node *Next;
};
我还在任何函数之前宣布了一个指向我的结构的指针:
struct node *global;
*global 不是全局指针吗?
现在我有三个函数,其中包含处理我的链表的新指针:
void add(void); //add nodes to list with *global, *pointer and *last
struct node *pointer *last;
void print(void); //print node inside the list with *global and *pointer
struct node *pointer;
void quit(void); //free malloc'd list using *global and *pointer
struct node *pointer;
对我来说很明显,我没有以任何方式将我的结构从一个函数传递到另一个函数。我只是将全局 *global 分配给函数内的本地指针,它工作正常,但不是我想要学习的。
我一直在寻找我的问题的答案,但显然我在 C 的基础知识中遗漏了一些巨大的东西。
那么,我到底应该在这里做什么?我该如何移动
struct node *global;
在我的函数中,例如,我可以在我的主函数中创建一个链接列表,它将从中传递给函数添加、打印和退出。我如何从这些函数中返回这个列表?
另外,原始结构应该在代码的开头还是我必须在每个函数中再次创建它以避免全局指针/变量?