Notas sobre C ++: A inicialização de matrizes possui uma boa lista sobre a inicialização de matrizes. eu tenho um
int array[100] = {-1};
esperando que esteja cheio de -1, mas não, apenas o primeiro valor é e o restante é 0 misturado com valores aleatórios.
O código
int array[100] = {0};
funciona bem e define cada elemento como 0.
O que estou perdendo aqui .. Não é possível inicializá-lo se o valor não for zero?
E 2: a inicialização padrão (como acima) é mais rápida que o loop usual em toda a matriz e atribui um valor ou faz a mesma coisa?
{0}
não é um caso especial para estruturas nem matrizes. A regra é que elementos sem inicializador são inicializados como se tivessem 0
um inicializador. Se houver agregados aninhados (por exemplo struct x array[100]
), os inicializadores serão aplicados aos não agregados na ordem "maior de linha"; chaves pode opcionalmente ser omitido fazendo isso. struct x array[100] = { 0 }
é válido em C; e válido em C ++, desde que o primeiro membro do struct X
aceite 0
como inicializador.
{ 0 }
não é especial em C, mas é muito mais difícil definir um tipo de dados que não pode ser inicializado com ele, pois não há construtores e, portanto, não há maneira de deixar 0
de ser implicitamente convertido e atribuído a algo .