À moins que cette valeur ne soit 0 (auquel cas vous pouvez omettre une partie de l'initialisateur et les éléments correspondants seront initialisés à 0), il n'y a pas de moyen simple.
Mais ne négligez pas la solution la plus é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...
Cela va donc initialiser 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 :
int myArray[10] = {}; //all elements 0 in C++
N'oubliez pas que les objets ayant une durée de stockage statique seront initialisés à 0 si aucun initialisateur n'est spécifié :
static int myArray[10]; //all elements 0
Et que "0" ne signifie pas nécessairement "tous-bits-zéro", donc utiliser ce qui précède est mieux et plus portable que memset(). (Les valeurs à virgule flottante seront initialisées à +0, les pointeurs à la valeur nulle, etc.)
24 votes
Aucune des réponses jusqu'à présent ne mentionne la notation de l'initialisateur désigné qui est réalisable avec C99 et plus. Par exemple :
enum { HYDROGEN = 1, HELIUM = 2, CARBON = 6, NEON = 10, … };
ystruct element { char name[15]; char symbol[3]; } elements[] = { [NEON] = { "Neon", "Ne" }, [HELIUM] = { "Helium", "He" }, [HYDROGEN] = { "Hydrogen", "H" }, [CARBON] = { "Carbon", "C" }, … };
. Si vous enlevez le point de suspension…
ces fragments compilent sous C99 ou C11.0 votes
En fait, la réponse d'abelenky utilise un initialisateur désigné, mais le code d'initialisation n'est pas entièrement formé.
0 votes
Memset() peut aider, mais cela dépend de la valeur.
2 votes
memset()
discussion spécifique : stackoverflow.com/questions/7202411/ Je pense que ça ne fonctionne que pour 0.