A meno che quel valore sia 0 (nel qual caso è possibile omettere una parte dell'inizializzatore e gli elementi corrispondenti verranno inizializzati su 0), non esiste un modo semplice.
Non trascurare l'ovvia soluzione, però:
int myArray[10] = { 5, 5, 5, 5, 5, 5, 5, 5, 5, 5 };
Gli elementi con valori mancanti verranno inizializzati su 0:
int myArray[10] = { 1, 2 }; // initialize to 1,2,0,0,0...
Quindi questo inizializzerà tutti gli elementi su 0:
int myArray[10] = { 0 }; // all elements 0
In C ++, anche un elenco di inizializzazione vuoto inizializzerà ogni elemento su 0. Ciò non è consentito con C:
int myArray[10] = {}; // all elements 0 in C++
Ricorda che gli oggetti con durata di archiviazione statica verranno inizializzati su 0 se non viene specificato alcun inizializzatore:
static int myArray[10]; // all elements 0
E che "0" non significa necessariamente "all-bit-zero", quindi usare quanto sopra è meglio e più portatile di memset (). (I valori in virgola mobile verranno inizializzati su +0, i puntatori su valore null, ecc.)
enum { HYDROGEN = 1, HELIUM = 2, CARBON = 6, NEON = 10, … };
estruct element { char name[15]; char symbol[3]; } elements[] = { [NEON] = { "Neon", "Ne" }, [HELIUM] = { "Helium", "He" }, [HYDROGEN] = { "Hydrogen", "H" }, [CARBON] = { "Carbon", "C" }, … };
. Se si rimuovono i puntini di sospensione…
, questi frammenti vengono compilati in C99 o C11.