有什么区别
1struct LinkedList *current = malloc(sizeof(struct LinkedList));
struct LinkedList *current = malloc(sizeof(struct LinkedList));
和
2struct LinkedList *current;
struct LinkedList *current;
struct LinkedList{ int data; struct LinkedList *next; }
当我创建 LinkedList 时,我无法使用第二个提到的代码实现大部分预期结果。
这两段代码有一些区别,让我们逐个解释:
这段代码做了以下事情:
struct LinkedList
current
malloc()
在这种情况下,您创建了一个动态分配的 struct LinkedList 对象,并且 current 指针指向了该对象的内存空间。这意味着您可以使用 current 指针来访问和操作该对象。
这段代码只是声明了一个指向 struct LinkedList 类型的指针 current,但没有分配内存来存储 struct LinkedList 类型的对象。在这种情况下,current 指针将会是一个未初始化的指针,它不会指向有效的内存空间。因此,您无法直接使用该指针来访问或操作 LinkedList 对象,因为对象本身并没有被创建。
LinkedList
要解决这个问题,您可以使用 malloc() 函数来为 current 指针分配内存,就像第一段代码中所做的那样,或者您可以使用静态分配来创建 LinkedList 对象,如下所示:
struct LinkedList current_node; struct LinkedList *current = ¤t_node;
在这种情况下,current 指针指向了静态分配的 LinkedList 对象 current_node。
current_node