结构在链表 C 语言中不起作用



在下面的代码中,一段代码正在工作,但是如果我注释并运行第二段代码,它不起作用,为什么?

typedef struct {
float gravity;
float difficulty;
}planet_t;
typedef struct list {
struct list * next;
planet_t planet;
}list_t;
int main()
{
//this piece works
list_t * planetList;
planetList = malloc(sizeof(list_t));
planetList->planet.gravity=9.8;
planetList->planet.difficulty = 2;
planetList->next = NULL;
//this does not work
list_t * planetList;
list_t * temp = planetList;
temp=malloc(sizeof(list_t));
temp->planet.gravity=9.8;
temp->planet.difficulty = 2;
temp->next = NULL;
/* let's assume here is the working code which prints all the elements in Linked List */
}

谁能告诉我我在这里错过了什么?

指针只是指向内存的数字。

请考虑代码的这一部分:

list_t * planetList; 
list_t * temp = planetList;
temp=malloc(sizeof(list_t));

让我们逐行分解代码。

list_t * planetList; 

您刚刚声明了一个指针(数字(,并且该值未初始化。

list_t * temp = planetList;

您声明了另一个指针(数字(,并且该值等于未初始化的值planetList

temp=malloc(sizeof(list_t));

将值temp设置为返回的任何malloc()
planetList保持未初始化状态。

正如@Jonathan指出的那样,您的问题可能是planetList从未设置为任何内容,因此您无法使用它。

最新更新