Solange dieser Wert nicht 0 ist (in diesem Fall können Sie einen Teil des Initialisierers weglassen und die entsprechenden Elemente werden auf 0 initialisiert), gibt es keinen einfachen Weg.
Übersehen Sie jedoch nicht die offensichtliche Lösung:
int myArray[10] = { 5, 5, 5, 5, 5, 5, 5, 5, 5, 5 };
Elemente mit fehlenden Werten werden auf 0 initialisiert:
int myArray[10] = { 1, 2 }; // initialize to 1,2,0,0,0...
Dies initialisiert also alle Elemente auf 0:
int myArray[10] = { 0 }; // all elements 0
In C ++ initialisiert eine leere Initialisierungsliste auch jedes Element auf 0. Dies ist mit C nicht zulässig :
int myArray[10] = {}; // all elements 0 in C++
Denken Sie daran, dass Objekte mit statischer Speicherdauer auf 0 initialisiert werden, wenn kein Initialisierer angegeben ist:
static int myArray[10]; // all elements 0
Und diese "0" bedeutet nicht unbedingt "All-Bits-Null", daher ist die Verwendung der oben genannten Punkte besser und portabler als memset (). (Gleitkommawerte werden auf +0 initialisiert, Zeiger auf Nullwert usw.)
enum { HYDROGEN = 1, HELIUM = 2, CARBON = 6, NEON = 10, … };
undstruct element { char name[15]; char symbol[3]; } elements[] = { [NEON] = { "Neon", "Ne" }, [HELIUM] = { "Helium", "He" }, [HYDROGEN] = { "Hydrogen", "H" }, [CARBON] = { "Carbon", "C" }, … };
. Wenn Sie die Auslassungspunkte entfernen…
, werden diese Fragmente unter C99 oder C11 kompiliert.