Hoe Array initialiseren op 0 in C?

Ik heb een grote nul-array nodig in C als een wereldwijd. Is er een manier om dit te doen, naast het typen

char ZEROARRAY[1024] = {0, 0, 0, /* ... 1021 more times... */ };

?


Antwoord 1, Autoriteit 100%

Global variabelen en statische variabelen worden automatisch geïnitialiseerd naar nul. Als u eenvoudig

hebt

char ZEROARRAY[1024];

Bij Global Scope is het allemaal nullen bij runtime. Maar eigenlijk daar is een stende syntaxis als u een lokale array had. Als een array gedeeltelijk is geïnitialiseerd, ontvangen elementen die niet worden geïnitialiseerd, de waarde 0 van het juiste type. U kunt schrijven:

char ZEROARRAY[1024] = {0};

De compiler zou de ongeschreven vermeldingen met nullen vullen. Als alternatief kunt u memsetgebruiken om de array bij het opstarten van het programma te initialiseren:

memset(ZEROARRAY, 0, 1024);

Dat zou handig zijn als u het had gewijzigd en het opnieuw wilde resetten naar alle nullen.


Antwoord 2, Autoriteit 13%

Als u de array wilt initialiseren op andere dan 0, met gccU kunt doen:

int array[1024] = { [ 0 ... 1023 ] = -1 };

Dit is een GNU-extensie van C95 aangewezen initializers . In oudere GCC moet u mogelijk -std=gnu99gebruiken om uw code te compileren.

Other episodes