【发布时间】:2015-07-29 00:25:36
【问题描述】:
我在初始化 C 中的结构数组时遇到问题。 这是我的结构:
typedef struct Voie {
int num;
int sem_num[3];
int crois[3];
} Voie;
这两个数组将包含 0、2 或 3 个整数。
我有一个包含 12 个“Voie”的数组:
Voie voies[12];
并且我希望用这些参数初始化它们中的每一个:
{1,{0,16,1},{4,7,8}}
{2,{2,3},{4,5}}
{3,{},{}}
{4,{4,17,5},{7,10,11}}
{5,{6,7},{7,8}}
{6,{},{}}
{7,{8,17,9},{10,1,2}}
{8,{10,11},{10,11}}
{9,{},{}}
{10,{12,16,13},{1,4,5}}
{11,{14,15},{1,2}}
{12,{},{}}
我尝试使用返回结构的函数,用开关分隔每个案例,但遇到了重新定义问题。 然后我找到了我认为是最好的解决方案,但仍然无法运行:
int cas[][] = { {1,{0,16,1},{4,7,8}},
{2,{2,3},{4,5}},
{3,{},{}},
{4,{4,17,5},{7,10,11}},
{5,{6,7},{7,8}},
{6,{},{}},
{7,{8,17,9},{10,1,2}},
{8,{10,11},{10,11}},
{9,{},{}},
{10,{12,16,13},{1,4,5}},
{11,{14,15},{1,2}},
{12,{},{}} };
for (i=0 ; i<12 ; i++) {
voies[i] = cas[i];
}
我什至不确定这是否可能,因为以下工作:
Voie v = {1,{0,16,1},{4,7,8}};
但不是以下:
int tab[] = {1,{0,16,1},{4,7,8}};
Voie v = tab;
另外:初始化后如何访问结构中的每个元素?
感谢您的帮助。
【问题讨论】:
-
是什么导致你这样做:
int cas[][]? -
这是另一个帖子中给出的解决方案。问题和我的差不多。
-
这么多重复我不知道用哪一个来关闭它。
-
所以你可能想链接这个答案?
-
对不起,我明白你的意思。我正在谈论的答案没有说 int cas[][] 而是 int cas[][9] 但由于我不知道我的情况是什么大小,所以我让它为空。 stackoverflow.com/a/22927133/4403802
标签: c arrays dynamic struct initialization