Concetti Chiave
- Una variabile è definita da nome, tipo, visibilità, tempo di vita e specifiche di classe di memorizzazione.
- Il tempo di vita di una variabile determina per quanto tempo l'area di memoria ad essa associata è valida.
- Esistono due classi di storage duration: static, che dura per tutta la vita del programma, e automatic, legata alla visibilità della variabile.
- Le variabili statiche locali mantengono il loro valore anche dopo la fine del blocco di codice, utile per preservare informazioni tra chiamate a funzione.
- I qualificatori di tipo specificano proprietà aggiuntive sui dati gestiti dalle variabili, influenzando il loro comportamento nel programma.
Una variabile è caratterizzata da:
- nome: identificativo
- tipo: specifica classe di valori assumibili dalla variabile che permettono di utilizzare determinati operatori
- visibilità (o scope): parte di programma in cui la variabile è nota e può essere quindi usata
- tempo di vita:tempo in cui resta valida l’associazione tra identificativo e indirizzo fisico di memoria
- specifica tori di classe di memorizzazione: parole chiave che permettono di cambiare la classe di memorizzazione o la visibilità delle variabili e funzioni.
- qualificatori di tipo: parole chiave che specificano proprietà sul tipo di dato
Tempo di vita delle variabili
Tempo di vita di una variabile
Ogni variabile ha un tempo di vita, ovvero il lasso di tempo in cui esiste un’area di memoria ad essa associata.
Ci sono due classi di storage duration (tempo di vita):
- static: il tempo di vita si estende per tutta la durata del programma
- automatic: legato al campo di visibilità della variabile
Se static viene usato con variabili locali, la variabile resta in vita per tutta la durata del programma, quindi la variabile preserva il proprio contenuto anche quando il blocco a cui appartiene è terminato.
È utile per preservare il valore di una variabile locale tra chiamate successive a funzione: la variabile viene inizializzata solo alla prima chiamata.
Domande da interrogazione
- Quali sono le caratteristiche principali di una variabile?
- Qual è la differenza tra tempo di vita statico e automatico di una variabile?
- Come può essere utile una variabile locale con tempo di vita statico?
Una variabile è caratterizzata da un nome identificativo, un tipo che definisce la classe di valori, la visibilità che indica dove può essere utilizzata, il tempo di vita che determina quanto a lungo esiste in memoria, e specificatori di classe di memorizzazione e qualificatori di tipo che ne influenzano le proprietà (come indicato nel testo).
Il tempo di vita statico si estende per tutta la durata del programma, mentre il tempo di vita automatico è legato al campo di visibilità della variabile, esistendo solo durante l'esecuzione del blocco in cui è definita (come spiegato nel testo).
Una variabile locale con tempo di vita statico preserva il proprio contenuto anche dopo la fine del blocco a cui appartiene, permettendo di mantenere il valore tra chiamate successive alla funzione, poiché viene inizializzata solo alla prima chiamata (secondo quanto descritto nel testo).