struct不能在Linked List C语言中工作

时间:2018-05-19 20:17:29

标签: c struct linked-list

在下面的代码中,一段代码正在运行,但如果我发表评论并运行第二部分它不起作用,为什么?

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 */
}

有人能告诉我,我在这里遗失了什么吗?

1 个答案:

答案 0 :(得分:0)

指针只是指向记忆的数字。

考虑这部分代码:

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永远不会被设置为任何东西,因此你无法使用它。