O ile ta wartość nie wynosi 0 (w którym to przypadku można pominąć część inicjatora, a odpowiednie elementy zostaną zainicjowane na 0), nie ma łatwego sposobu.
Nie zapomnij o oczywistym rozwiązaniu:
int myArray[10] = { 5, 5, 5, 5, 5, 5, 5, 5, 5, 5 };
Elementy z brakującymi wartościami zostaną zainicjowane na 0:
int myArray[10] = { 1, 2 }; // initialize to 1,2,0,0,0...
To zainicjuje wszystkie elementy do 0:
int myArray[10] = { 0 }; // all elements 0
W C ++ pusta lista inicjalizacji również inicjuje każdy element na 0. Nie jest to dozwolone w C:
int myArray[10] = {}; // all elements 0 in C++
Pamiętaj, że obiekty ze statycznym czasem przechowywania będą inicjowane na 0, jeśli nie zostanie określony inicjator:
static int myArray[10]; // all elements 0
A to „0” niekoniecznie oznacza „wszystko-zero-bity”, więc użycie powyższego jest lepsze i bardziej przenośne niż memset (). (Wartości zmiennoprzecinkowe zostaną zainicjowane na +0, wskaźniki na wartość zerową itp.)
enum { HYDROGEN = 1, HELIUM = 2, CARBON = 6, NEON = 10, … };
istruct element { char name[15]; char symbol[3]; } elements[] = { [NEON] = { "Neon", "Ne" }, [HELIUM] = { "Helium", "He" }, [HYDROGEN] = { "Hydrogen", "H" }, [CARBON] = { "Carbon", "C" }, … };
. Jeśli usuniesz wielokropek…
, te fragmenty kompilują się pod C99 lub C11.