Note C ++: l'inizializzazione di array ha una bella lista sull'inizializzazione di array. Ho un
int array[100] = {-1};
aspettandosi che sia pieno con -1 ma non lo è, solo il primo valore è e gli altri sono 0 mescolati con valori casuali.
Il codice
int array[100] = {0};
funziona bene e imposta ogni elemento su 0.
Cosa mi manca qui ... Non è possibile inizializzarlo se il valore non è zero?
E 2: l'inizializzazione predefinita (come sopra) è più veloce del normale ciclo attraverso l'intero array e assegna un valore o fa la stessa cosa?
{0}
non è un caso speciale per strutture o array. La regola è che gli elementi senza inizializzatore vengano inizializzati come se avessero 0
un inizializzatore. Se sono presenti aggregati nidificati (ad es. struct x array[100]
), Gli inizializzatori vengono applicati ai non aggregati in ordine di "riga maggiore"; le parentesi graffe possono facoltativamente essere omesse facendo questo. struct x array[100] = { 0 }
è valido in C; e valido in C ++ purché il primo membro di struct X
accetta 0
come inizializzatore.
{ 0 }
non è speciale in C, ma è molto più difficile definire un tipo di dati che non può essere inizializzato con esso poiché non ci sono costruttori e quindi nessun modo per impedire che 0
vengano convertiti e assegnati in modo implicito a qualcosa .