2012-04-24 296 views
0
typedef struct Node{ 
     int x; 
     int y; 
     struct Node* next; 
    }Node; 

我想用這種方式創造主「清單」:初始化結構

int main(){ 
     Node list = {1,2,NULL}; 
    } 

我想在聲明中初始化一個結構:

int main(){ 
     Node list; 
} 
這樣

,而不是結構 試過這樣:

typedef struct Node{ 
     int x; 
     int y; 
     struct Node* next; 
    }Node = {1,2,NULL}; 

錯誤C2513:「節點」:沒有之前「=」定義的變量

需要幫助

回答

3

你不能給結構成員預定值C.使用構造類似的功能或構造像宏。

+0

你能給我舉個例子嗎? – Alex 2012-04-24 17:26:38

+0

@ user1354271我可以想到的任何事情都只是對'Node list = {1,2,NULL};''的醜陋包裝。 – cnicutar 2012-04-24 17:28:08

+0

主要我不能改變,它必須是這樣的: int main(){ 節點列表; } 但我需要爲用戶啓動節點,如果他以這種方式聲明列表 – Alex 2012-04-24 17:40:28

1

typedef(或struct)「statement」定義了一個類型,而不是一個對象。

類型沒有價值。談論與對象有關的價值觀纔有意義。

對象沒有(比0等時,他們隱式初始化)的默認值。

所以你不能做你想做的。

+0

未通過默認初始化爲「0」 – Alex 2012-04-24 17:28:30

+0

當對象被隱式初始化時,它們被初始化爲'0':就是我的意思。 – pmg 2012-04-24 17:29:51

+0

主要我不能改變,它必須是這樣的: int main(){ 節點列表; } 但我需要爲用戶啓動節點,如果他以這種方式聲明列表 – Alex 2012-04-24 17:39:13