TYPE IDENTIFIER = EXPRESSION ;dove il tipo di EXPRESSION coincide con TYPE.
Questo costrutto è semplicemente un'abbreviazione, infatti la dichiarazione sopra corrisponde a
TYPE IDENTIFIER ; IDENTIFIER = EXPRESSION ;
Solamente nel caso di variabili di tipo array/record l'inizializzazione non può
essere rimpiazzata da una successiva assegnazione.
Infatti, in tali casi nell'inizializzazione è possibile usare anche costanti di
tipo array/record.
Nel caso degli array la forma di tali costanti è l'elenco degli elementi
in ordine, racchiusi
tra graffe e separati da virgole.
Se gli elementi elencati sono meno di quelli dell'array, essi saranno assegnate alle prime
componenti, le rimanenti componenti rimarranno non inizializzate.
Similmente per i record.
Per i tipi "stringa", cioè array di caratteri, i valori iniziali
possono essere rappresentati come sequenze di caratteri racchiuse tra doppi
apici ("); in tal caso ricordare comunque che verrà aggiunto
implicitamente alla fine il carattere nullo (\0, quello con codice 0).
/*esempi di inizializzazioni*/ char spazio = ' '; int vet[5] = { 4, 1, 2, 3 , 4 }; float lista[10] = {3.333}; /*solo la prima componente e' inizializzata*/ int matrix[2][3] = { {1,1,1}, {2,2,2} }; /*una matrice e' un array i cui elementi sono a loro volta array*/ char str[10] ="abc"; struct RRR { int A, B; float C[3]; char D[5]; }; RRR X = {2, 4, {1.1, 2.2, 3.3 }, "OK"};
ESERCIZIO