A menos que ese valor sea 0 (en cuyo caso puede omitir alguna parte del inicializador y los elementos correspondientes se inicializarán a 0), no hay una manera fácil.
Sin embargo, no pase por alto la solución obvia:
int myArray[10] = { 5, 5, 5, 5, 5, 5, 5, 5, 5, 5 };
Los elementos con valores faltantes se inicializarán a 0:
int myArray[10] = { 1, 2 }; // initialize to 1,2,0,0,0...
Entonces esto inicializará todos los elementos a 0:
int myArray[10] = { 0 }; // all elements 0
En C ++, una lista de inicialización vacía también inicializará cada elemento a 0. Esto no está permitido con C:
int myArray[10] = {}; // all elements 0 in C++
Recuerde que los objetos con una duración de almacenamiento estático se inicializarán a 0 si no se especifica ningún inicializador:
static int myArray[10]; // all elements 0
Y ese "0" no necesariamente significa "todos los bits cero", por lo que usar lo anterior es mejor y más portátil que memset (). (Los valores de coma flotante se inicializarán a +0, los punteros a valor nulo, etc.)
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 elimina los puntos suspensivos…
, esos fragmentos se compilan bajo C99 o C11.memset()
discusión específica: stackoverflow.com/questions/7202411/… Creo que solo funciona para 0.