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 memset
gebruiken 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 gcc
U kunt doen:
int array[1024] = { [ 0 ... 1023 ] = -1 };
Dit is een GNU-extensie van C95 aangewezen initializers . In oudere GCC moet u mogelijk -std=gnu99
gebruiken om uw code te compileren.