2012-04-24 209 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