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