Liste des Groupes | Revenir à cl c |
On 6/12/2024 6:22 PM, Keith Thompson wrote:Yes. It's good to point that out, since people might assume that using a string literal here only initialises the bit covered by that string literal.Janis Papanagnou <janis_papanagnou+ng@hotmail.com> writes:On 12.06.2024 22:47, DFS wrote:[...][...]before: char outliers[100];
after : char outliers[100] = "";Seriously; why do you expect [in C] a declaration to initialize that>
stack object? (There are other languages that do initializations as
the language defines it, but C doesn't; it may help to learn before
programming in any language?) And why do you think that "" would be
an appropriate initialization (i.e. a single '\0' character) and not
all 100 elements set to '\0'? (Someone else might want to access the
element 'answer[99]'.) And should we pay for initializing 1000000000
characters in case one declares an appropriate huge array?
This:
char outliers[100] = "";
initializes all 100 elements to zero. So does this:
char outliers[100] = { '\0' };
Any elements or members not specified in an initializer are set to zero.
A good compiler will generate the same code for both cases - strcpy() is often inlined for such uses.>
If you want to set an array's 0th element to 0 and not waste time
initializing the rest, you can assign it separately:
char outliers[100];
outliers[0] = '\0';
or
char outliers[100];
strcpy(outliers, "");
though the overhead of the function call is likely to outweigh the
cost of initializing the array.
Thanks. I'll have to remember these things. I like to use char arrays.What programming language do you usually use? And why are you writing in C instead? (Or do you simply not do much programming?)
The problem is I don't use C very often, so I don't develop muscle memory.
Les messages affichés proviennent d'usenet.