[英]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.