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.