Skip to content

Qualificatori di Tipo

Tutti i tipi esaminati finora sono detti “unqualified” (non qualificati). Puoi alterare il comportamento del compilatore verso una variabile usando i qualificatori di tipo.

Un oggetto dichiarato const non può essere modificato dopo essere stato inizializzato (è di sola lettura). Il compilatore potrebbe anche posizionarlo fisicamente in una porzione di memoria protetta del sistema operativo.

const int limite = 100;
limite = 200; // ERRORE DI COMPILAZIONE: variabile in sola lettura

Tentare di modificare un valore const aggirando le regole (ad esempio usando in modo forzato i puntatori) risulta in un Undefined Behavior.

Questo qualificatore dice al compilatore: “Attenzione, il valore di questa variabile può cambiare in qualsiasi momento senza che il programma esegua alcuna riga di codice”.

Introdotto nel C99 per i puntatori, dice al compilatore: “Prometto che l’oggetto a cui punta questo puntatore non sarà modificato o letto da nessun altro puntatore all’interno di questo blocco”. Sapendo questo, il compilatore è libero di applicare ottimizzazioni molto spinte (aliasing optimization). Se menti e usi un altro puntatore per alterare quella memoria, causerai Undefined Behavior.

Il codice di seguito non compila (o non dovrebbe!) perché tenta di alterare dati protetti. Correggilo in modo che rispetti le restrizioni del qualificatore const.