vale1411
Genius
2 min. di lettura
Vota

Concetti Chiave

  • Ogni variabile ha un campo di visibilità definito, limitato allo scope in cui è dichiarata, evitando conflitti di nomi all'interno dello stesso ambito.
  • Le variabili globali sono accessibili da tutto il programma ma possono complicare la leggibilità e la gestione del codice, quindi vanno usate con cautela.
  • Le variabili locali, dichiarate all'interno delle funzioni, sono visibili solo nel loro specifico blocco e mascherano variabili esterne con lo stesso nome.
  • La parola chiave "extern" consente di accedere a variabili globali definite altrove nel programma senza allocare nuova memoria per esse.
  • La parola chiave "static" limita la visibilità di variabili e funzioni al file corrente, con le variabili non inizializzate automaticamente settate a 0.

Visibilità di una variabile

Ogni dichiarazione di variabile ha un campo di visibilità, e solo in questo determinato campo può essere chiamata. All’interno dello stesso scope non possono esserci variabili con lo stesso nome, questo vale anche per tutti gli identificatori di un programma.
Le variabili dichiarate a livello di programma sono chiamate variabili globali, quindi visibili e utilizzabili da tutte le funzioni del programma, anche se diviso in più file.
Poiché una variabile modificabile da tutte le funzioni, contenute anche in file esterni, potrebbe rendere il programma difficile da leggere e controllare, è meglio evitare di usare le variabili globali.
Le variabili dichiarate invece all’interno di una funzione sono dette variabili locali o automatiche, queste sono visibili e utilizzabili solo nel blocco di cui fanno parte. Una variabile locale maschera le variabili con lo stesso nome esterne al blocco.

La parola chiave extern permette di vedere all’interno di un file, funzione o blocco, una variabile globale definita in qualche parte del programma.
extern ;
Questo dichiarazione non causa allocazione di memoria per la variabile, sarà poi il linker a occuparsi di risolvere il riferimento alla variabile esterna.
Durante la compilazione “extern int x=0;” puo interpretare in due modi diversi:
- la variabile x è globale, definita da qualche parte nel programma ma c’è un errore di sintassi
- la variabile x non è globale, quindi l’istruzione equivale a int x=0;
Quindi è possibile utilizzare extern con le variabile globali contenute nello stesso file, anche se superfluo.
La parola chiave static permette di modificare la visibilità delle dichiarazioni di variabili e funzioni. Se le variabili static non sono inizializzate, sono inizializzate automaticamente a 0 (cioè, tutti i bit dello spazio riservato alla variabile sono inizializzati a zero).
static permette di modificare le modalità di memorizzazione di:
- variabili globali, allora la variabile diventa visibile solo a livello di file
- funzioni, visibile solo all’interno del file

Domande da interrogazione

  1. Qual è la differenza tra variabili globali e locali?
  2. Le variabili globali sono dichiarate a livello di programma e sono visibili e utilizzabili da tutte le funzioni del programma, anche se diviso in più file. Le variabili locali, invece, sono dichiarate all'interno di una funzione e sono visibili e utilizzabili solo nel blocco di cui fanno parte.

  3. Come si utilizza la parola chiave "extern"?
  4. La parola chiave "extern" permette di accedere a una variabile globale definita in qualche parte del programma all'interno di un file, funzione o blocco. Non causa allocazione di memoria per la variabile, poiché sarà il linker a risolvere il riferimento alla variabile esterna.

  5. Qual è la funzione della parola chiave "static"?
  6. La parola chiave "static" modifica la visibilità delle dichiarazioni di variabili e funzioni. Per le variabili globali, le rende visibili solo a livello di file, mentre per le funzioni, le rende visibili solo all'interno del file. Se non inizializzate, le variabili static sono automaticamente inizializzate a 0.

Domande e risposte

Hai bisogno di aiuto?
Chiedi alla community