À moins que cette valeur ne soit 0 (auquel cas vous pouvez omettre une partie de l'initialiseur et les éléments correspondants seront initialisés à 0), il n'y a pas de moyen simple.
Cependant, ne négligez pas la solution évidente:
int myArray[10] = { 5, 5, 5, 5, 5, 5, 5, 5, 5, 5 };
Les éléments avec des valeurs manquantes seront initialisés à 0:
int myArray[10] = { 1, 2 }; // initialize to 1,2,0,0,0...
Donc, cela initialisera tous les éléments à 0:
int myArray[10] = { 0 }; // all elements 0
En C ++, une liste d'initialisation vide initialisera également chaque élément à 0. Ce n'est pas autorisé avec C:
int myArray[10] = {}; // all elements 0 in C++
N'oubliez pas que les objets avec une durée de stockage statique seront initialisés à 0 si aucun initialiseur n'est spécifié:
static int myArray[10]; // all elements 0
Et que "0" ne signifie pas nécessairement "tous les bits à zéro", donc l'utilisation de ce qui précède est meilleure et plus portable que memset (). (Les valeurs en virgule flottante seront initialisées à +0, les pointeurs à la valeur nulle, etc.)
enum { HYDROGEN = 1, HELIUM = 2, CARBON = 6, NEON = 10, … };
etstruct element { char name[15]; char symbol[3]; } elements[] = { [NEON] = { "Neon", "Ne" }, [HELIUM] = { "Helium", "He" }, [HYDROGEN] = { "Hydrogen", "H" }, [CARBON] = { "Carbon", "C" }, … };
. Si vous supprimez les points de suspension…
, ces fragments se compilent sous C99 ou C11.