在代码中创建head和n之间的区别是什么?

时间:2016-10-21 18:21:09

标签: c list struct

在此代码中,头部对象位于结构定义的正前方, 但是n是在int main中制作的。

我们可以直接声明头部的声明方式吗?我想我只是不理解struct node *n与头部声明的方式有何不同,因为它们都是对象吗?

  struct node
    {
        int data;
        struct node *next;
    }*head;
    .
    .
    .
    int  main()
    {
        int i,num;
        struct node *n;
        head = NULL;
        ...

2 个答案:

答案 0 :(得分:1)

在你的代码中,你混合了struct node的声明和变量head的声明,这是正确的C但TBH不太可读。

编写代码,就像那样:

struct node
{
    int data;
    struct node *next;
};                   // declaration of struct node

.
.
struct node *head;   //declaration of a variable head of type "pointer to struct node"
.
.
.
int  main()
{
    int i,num;
    struct node *n;   //declaration of a local variable n of type "pointer to struct node"
    head = NULL;
    ...

它等同于您的代码,但更具可读性。

答案 1 :(得分:0)

“head”是一个全局指针,其中“n”是指向节点结构的本地指针。

另请注意,“head”和“n”都不是对象。它们是指向节点结构对象的指针。你需要为它们分配内存。