Le variabili sono ulteriormente classificate nella variabile "locale" e "globale", che è l'argomento principale della nostra discussione. Qui la differenza principale tra una variabile locale e una variabile globale è che, una variabile locale viene dichiarata all'interno di un blocco funzione, dove la variabile globale viene dichiarata al di fuori delle funzioni nel programma.
Studiamo alcune più differenze tra una variabile locale e una globale insieme a una tabella di confronto.
Grafico comparativo:
Base per il confronto | Variabile locale | Variabile globale |
---|---|---|
Dichiarazione | Le variabili sono dichiarate all'interno di una funzione. | Le variabili sono dichiarate al di fuori di qualsiasi funzione. |
Scopo | All'interno di una funzione, all'interno della quale sono dichiarati. | In tutto il programma. |
Accesso | Accede solo alle dichiarazioni, all'interno di una funzione in cui sono dichiarate. | Acceduto da qualsiasi affermazione nell'intero programma. |
Vita | Creato quando il blocco funzione viene inserito e distrutto all'uscita. | Rimanere in esistenza per tutto il tempo in cui il programma è in esecuzione. |
Conservazione | Le variabili locali sono memorizzate nello stack, se non specificato. | Memorizzato su una posizione fissa decisa da un compilatore. |
Definizione della variabile locale
Una variabile locale viene sempre dichiarata all'interno di un blocco funzione. In C, una variabile locale viene dichiarata all'inizio di un blocco di codice. In C ++, possono essere dichiarati ovunque nel blocco di codice prima del loro utilizzo. Le variabili locali sono accessibili solo dalle istruzioni scritte all'interno di una funzione in cui vengono dichiarate le variabili locali. Sono sicuri, nel senso che non è possibile accedere a nessuna altra funzione dello stesso programma.
Le variabili locali esistono fino a quando il blocco della funzione è in esecuzione, e quindi distrutto dopo che l'esecuzione è uscita dal blocco. Le variabili locali perdono il loro contenuto non appena l'esecuzione ha lasciato il blocco in cui sono dichiarate.
La ragione è che le variabili locali sono memorizzate nello stack a meno che non venga specificata la loro memoria speciale. Lo stack è di natura dinamica e la modifica della posizione della memoria determina il motivo per cui la variabile locale non mantiene il proprio valore non appena il blocco di una funzione esiste.
Nota:
Tuttavia, esiste un modo per mantenere il valore di una variabile locale, usando il modificatore 'statico'.
Definizione di variabile globale
Una variabile globale viene dichiarata al di fuori di tutte le funzioni presenti in un programma. A differenza delle variabili locali, è possibile accedere alla variabile globale da qualsiasi funzione presente in un programma. Le variabili globali non sono molto affidabili in quanto il loro valore può essere modificato da qualsiasi funzione presente nel programma.
Le variabili globali rimangono in esistenza fino a quando l'intero programma non viene eseguito completamente. Le variabili globali mantengono i loro valori fino a quando il programma è in esecuzione. Il motivo è che sono memorizzati su una regione di memoria fissa, decisa dal compilatore.
Una variabile globale è utile in situazioni in cui più funzioni accedono agli stessi dati. L'utilizzo di un gran numero di variabili globali potrebbe essere problematico, in quanto potrebbero esserci modifiche indesiderate al valore di una variabile globale.
Differenza chiave tra la variabile locale e globale.
- Le variabili locali sono chiamate 'locali' perché sono note solo alle istruzioni scritte in una funzione all'interno della quale sono dichiarate e non sono note a nessuna altra funzione presente al di fuori di quel blocco funzione. Nel caso della variabile globale sono noti a ciascuna funzione presente in un programma; quindi, sono chiamati "globali".
- Le variabili globali mantengono il loro valore fino a quando il programma si trova nella fase di esecuzione, poiché vengono memorizzate in una posizione fissa decisa dal compilatore. Le variabili locali sono memorizzate nello stack; quindi, non mantengono il loro valore come 'stack' è di natura dinamica, ma il compilatore può essere diretto a conservare il loro valore, usando il modificatore 'statico'.
- Se una variabile globale e una locale sono dichiarate con lo stesso nome, tutte le istruzioni di un blocco di codice in cui viene dichiarata la variabile locale si riferiscono solo a una variabile locale e non provocheranno alcun effetto su una variabile globale.
- Una variabile locale viene distrutta quando il controllo del programma esce dal blocco in cui viene dichiarata la variabile locale. Tuttavia, una variabile globale viene distrutta quando viene terminato l'intero programma.
Conclusione:
Le variabili locali e globali sono entrambe ugualmente richieste durante la scrittura del programma. Ma, dichiarare un gran numero di variabili globali potrebbe essere problematico in un programma di grandi dimensioni, poiché potrebbe causare modifiche indesiderate a una variabile globale; e sarebbe difficile identificare quale parte di un programma abbia apportato tale cambiamento. Quindi, si dovrebbe evitare di dichiarare variabili globali non necessarie.