A menos que esse valor seja 0 (nesse caso, você pode omitir parte do inicializador e os elementos correspondentes serão inicializados como 0), não há uma maneira fácil.
Não negligencie a solução óbvia:
int myArray[10] = { 5, 5, 5, 5, 5, 5, 5, 5, 5, 5 };
Os elementos com valores ausentes serão inicializados em 0:
int myArray[10] = { 1, 2 }; // initialize to 1,2,0,0,0...
Portanto, isso inicializará todos os elementos para 0:
int myArray[10] = { 0 }; // all elements 0
No C ++, uma lista de inicialização vazia também inicializará todos os elementos para 0. Isso não é permitido com C:
int myArray[10] = {}; // all elements 0 in C++
Lembre-se de que objetos com duração de armazenamento estático serão inicializados como 0 se nenhum inicializador for especificado:
static int myArray[10]; // all elements 0
E que "0" não significa necessariamente "todos os bits-zero", portanto, usar o acima é melhor e mais portátil que memset (). (Os valores de ponto flutuante serão inicializados em +0, ponteiros para valor nulo etc.)
enum { HYDROGEN = 1, HELIUM = 2, CARBON = 6, NEON = 10, … };
estruct element { char name[15]; char symbol[3]; } elements[] = { [NEON] = { "Neon", "Ne" }, [HELIUM] = { "Helium", "He" }, [HYDROGEN] = { "Hydrogen", "H" }, [CARBON] = { "Carbon", "C" }, … };
. Se você remover as reticências…
, esses fragmentos serão compilados em C99 ou C11.