Initializing arrays of char
Bill Poser
poser at csli.Stanford.EDU
Fri Oct 5 11:16:07 AEST 1990
Regarding the assignment of "12345" to char x[5] and struct{char x[5]},
I spoke too soon. K&R2 contains a detail I hadn't noticed, and am not
sure that I approve of. On p.219, in the discussion of initialization
of fixed size arrays by string constants, it states:
...the number of characters in the string, NOT COUNTING
THE TERMINATING NULL CHARACTER, must not exceed the
size of the array. [emphasis mine]
This means that the assignment of "12345" to an array of five characters,
is legal. If K&R2 here reflects the standard, then both initializations
are legitimate.
This seems to me to be a bad idea. Everywhere else, one has to take
into account the terminating null. For example, x[5] = 'a' is
an error. Not counting the terminating null here is inconsistent.
Can anyone explain this decision?
More information about the Comp.lang.c
mailing list