Initializers for multi-dimensional arrays
Daniel Elbaum
dan at oresoft.uu.net
Tue Jun 13 05:53:44 AEST 1989
In <16984 at paris.ics.uci.edu> Doug Schmidt <schmidt at zola.ics.uci.edu> asks
why
I.
static bar foo[4][4] =
{
{1,0}, {2,0}, {3,0}, {4,0}, {5,0}, {6,0}, {7,0}, {8,0},
{9,0}, {10,0}, {11,0}, {12,0}, {13,0}, {14,0}, {15,0}, {16,0},
};
isn't the same as
II.
static bar foo[4][4] =
{
{ {1,0}, {2,0}, {3,0}, {4,0},},
{ {5,0}, {6,0}, {7,0}, {8,0},},
{ {9,0}, {10,0}, {11,0}, {12,0},},
{{13,0}, {14,0}, {15,0}, {16,0},},
};
according the the latest pANSI draft and traditional UNIX C
compilers.
dpANSI says that the bracketing of the initialization in I
requires assigning 1 to foo[0][0].i, 0 to foo[0][1].i, 2 to
foo[1][0].i, 0 to foo[1][1].i, etc., since each enclosed left
bracket specifies that the next nested member is to be given the
following value. In other words, {2,0} says "give 2 to the first
element of the next foo," which means to assign to the first element
of the next array of bar.
--
The workaday world must remain transparent to those who maintain it if
they are to find inspired within them a vision of the history they create.
({uunet,tektronix,reed,sun!nosun,osu-cis,psu-cs}!oresoft!(dan)@oresoft.uu.net)
More information about the Comp.lang.c
mailing list