从外面工作的你知道你有5件事情的数组初始化:
mystruct foo[5] = {
X,
X,
X,
X,
X
};
其中X
是一台为mystruct
类型的初始化。所以现在我们需要弄清楚每个X
的样子。的mystruct
每个实例有两个元素,somearray
和somevar
,所以你知道你的X
初始化会像
X = { Y, Z }
代回原来的声明中被结构化的,我们现在得到
mystruct foo[5] = {
{ Y, Z },
{ Y, Z },
{ Y, Z },
{ Y, Z },
{ Y, Z }
};
现在,我们需要弄清楚每个Y的样子。 Y对应于int
的3x2阵列的初始化器。再次,我们可以在从外部的工作,你有一个3元素数组的初始化:
Y = { A, A, A }
,其中每个阵列元素是int
一个2元素的数组:
A = { I, I }
Subsituting回为Y,我们得到
Y = { { I, I }, { I, I }, { I, I } }
代,早成X,我们得到
X = { { { I, I }, { I, I }, { I, I } }, Z }
现在让我们
mystruct foo[5] = {
{ { { I, I }, { I, I }, { I, I } }, Z },
{ { { I, I }, { I, I }, { I, I } }, Z },
{ { { I, I }, { I, I }, { I, I } }, Z },
{ { { I, I }, { I, I }, { I, I } }, Z },
{ { { I, I }, { I, I }, { I, I } }, Z }
};
由于Z
是一台为一个整数,我们并不需要打破它的任何进一步。只是实际的整数值取代I
S和Z
秒,你就大功告成了:
mystruct foo[5] = {
{{{101, 102}, {201, 202}, {301, 302}}, 41},
{{{111, 112}, {211, 212}, {311, 312}}, 42},
{{{121, 122}, {221, 222}, {321, 322}}, 43},
{{{131, 132}, {231, 232}, {331, 332}}, 44},
{{{141, 142}, {241, 242}, {341, 342}}, 45}
};
只是因为一些事情可以做,并不一定意味着你应该做他们。考虑一下从未看过你的代码的人会如何看待这样的初始化。 – 2012-03-12 14:47:57
@HunterMcMillen - 在许多情况下,这是比别人更好的选择。 – MByD 2012-03-12 14:57:21
@BinyaminSharet我只是相信在维护方面,初始化每一部分清楚地评论每一步会更加清楚。你可以举一个例子,这是首选吗?没有人想到我。 – 2012-03-12 15:03:56