Como inicializar a matriz para 0 em C?

Eu preciso de um grande array nulo em C como um global. Existe alguma maneira de fazer isso além de digitar

char ZEROARRAY[1024] = {0, 0, 0, /* ... 1021 more times... */ }; 

?

Variáveis ​​globais e variables ​​estáticas são automaticamente inicializadas para zero. Se você simplesmente

 char ZEROARRAY[1024]; 

no escopo global, serão todos os zeros em tempo de execução. Mas na verdade existe uma syntax abreviada se você tivesse um array local. Se uma matriz for parcialmente inicializada, os elementos que não forem inicializados receberão o valor 0 do tipo apropriado. Você poderia escrever:

 char ZEROARRAY[1024] = {0}; 

O compilador preencheria as inputs não escritas com zeros. Alternativamente, você poderia usar o memset para inicializar o array na boot do programa:

 memset(ZEROARRAY, 0, 1024); 

Isso seria útil se você o tivesse alterado e quisesse redefini-lo novamente para todos os zeros.

Se você quiser inicializar a matriz com valores diferentes de 0, com o gcc você pode fazer:

 int array[1024] = { [ 0 ... 1023 ] = -1 }; 

Esta é uma extensão GNU de Initializers Designados C99. No GCC mais antigo, você pode precisar usar -std=gnu99 para compilar seu código.