【发布时间】:2015-07-25 11:17:49
【问题描述】:
我以这种方式声明一个结构数组:
struct struct_name tab1[6] ={ {"1487" ,0.144}, {"148",2.1}, {"45",0.01}, {"12475847",0.52}, {"46",1.4}, {"0",5} };
struct struct_name tab2[7] = { {"1" ,0.9}, {"76",5.1},{"46",0.17},{"4625",0.0},{"46252",1.57},{"12",1.5},{"5",1.2} };
这很好用。
现在我需要在一个数组global_tab 中创建tab1 和tab2,并且仍然以这种方式初始化数据,但到目前为止我还不能这样做。我试过这样的动态分配
global_tab = malloc(2 * sizeof(struct struct_name *));
global_tab[0] = malloc(100 * sizeof(struct struct_name));
global_tab[0] = { {"1487" ,0.144}, {"148",2.1}, {"45",0.01}, {"12475847",0.52}, {"46",1.4}, {"0",5} };
但是我得到了这个错误
error: expected expression before ‘{’ token
global_tab[0] ={ {"1487" ,0.144}, {"148",2.1}, {"45",0.01}, {"12475847",0.52}, {"46",1.4}, {"0",5} };
我希望能够像使用 tab1 一样初始化 global_tab[0]
【问题讨论】:
-
旁注:
global_tab[0] = something然后global_tab[0] = something else意味着第一个分配几乎没有用。这就像在做int i = 5; i = 6;。 -
IIRC、C 初始化器列表仅适用于静态和自动存储持续时间?