2016-02-13 69 views
-3

繼我的部分代碼沒有編譯:預計 '=', ';' ..之前 - >標記

struct Node { 
    int data; 
    struct Node *next; 
} 
struct Node head; 
head->next = NULL; 

錯誤消息說: 錯誤:預期 '=', '', ';','asm'或'attrivute'before' - >'標記 head-> next = NUL;

+2

'頭戴式> next'只是一個shorcut對於'(* head).next',iff'head'是一個指針。在你的情況下,它不是,所以'頭'沒有意義。 – fanton

+0

您的結構定義的右大括號後需要分號。 –

回答

1

由於頭部結構,而不是指針,你可以用.訪問元素:

head.next = NULL; 
1

頭不是指針。使用'。':

head.next = NULL; 
0

除此之外,您應該使用點來訪問成員,似乎您將可執行代碼放置在聲明部分。 head.next = NULL;必須在函數內。

+0

結構聲明可能出現在函數體內部 –

0

您應該使用.而不是->,並且要小心文件範圍,您的可執行代碼應該在函數內部。

嘗試:

#include<stdio.h> 

struct Node { 
    int data; 
    struct Node *next; 
}; //Remember the ; 

int main(){ 
    struct Node head; 
    head.next = NULL; 

    //... 

    return 0; 
} 

或者:

#include<stdio.h> 

struct Node { 
    int data; 
    struct Node *next; 
}; //Remember the ; 

struct Node head; 

int main(){ 
    head.next = NULL; 

    //... 

    return 0; 
} 
1

的錯誤是你的結構定義後沒有分號:

struct Node { 
    int data; 
    struct Node *next; 
} ; /* <==== here */ 
相關問題