簡體   English   中英

用C聲明和初始化指針

[英]Declaration and initialisation of pointers in C

我正在整理C語言中指針的初始化和聲明。

我寫了一段代碼:

struct node
{
    int data;
    struct node* right=NULL;
    struct node* left=NULL;
};

struct node* newNode(int data) 
{
    struct node* temp = (struct node*)malloc(sizeof(struct node));

    temp->data = data;

    return temp;
}

返回了一個錯誤。 錯誤是:

預期的';' 聲明清單末尾

  struct node* right=NULL; 

然后,我將代碼更改為:

struct node
    {
        int data;
        struct node* right;
        struct node* left;
        right = NULL;
        left  = NULL;

    };

    struct node* newNode(int data) 
    {
        struct node* temp = (struct node*)malloc(sizeof(struct node));

        temp->data = data;

        return temp;
    }

返回相同的錯誤。

最后,

我將代碼更改為:

struct node
{
    int data;
    struct node* right;
    struct node* left;
};

struct node* newNode(int data) 
{
    struct node* temp = (struct node*)malloc(sizeof(struct node));

    temp->data = data;
    temp->right=NULL;
    temp->left=NULL;

    return temp;
}

上面的代碼可以正確編譯。 為什么會這樣呢?

您不能在struct聲明中初始化struct成員。 您必須在代碼外部進行。 struct聲明聲明一個類型,而不是一個可以初始化的變量。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM