C ++ variabili globali

C ++ variabili globali
È necessario identificare una posizione di memoria ed è identificata con un nome, chiamato variabile. La lunghezza di un programma, dall'alto verso il basso, ha porzioni diverse che fanno cose diverse. Alcune porzioni sono correlate ma discontinue per lunghezza. Gli intervalli per la lunghezza delle porzioni discontinue hanno altre porzioni, che sono correlate ad altre porzioni.

Un ambito è un insieme di porzioni correlate in cui una variabile può essere utilizzata o vista. Gli ambiti hanno nomi. Una variabile globale è una variabile che può essere vista in ogni portata di un programma. Una variabile globale può essere di diversi tipi. Questo articolo spiega come una variabile globale può essere vista negli ambiti comuni.

Contenuto dell'articolo

  • Porzioni correlate
  • Ambito globale e variabile globale
  • Blocco l'ambito e la variabile globale
  • Ambito da funzione normale e variabili globali
  • Ambito di classe e variabile globale
  • Conclusione

Porzioni correlate

Considera il seguente programma:

#includere
Utilizzo dello spazio dei nomi std;
int it = 5;
float ft = 2.7;
int fn1 (int integ = it)

/ * dichiarazioni */
restituire integ;

float fn2 (float flt = ft)

/ * dichiarazioni */
restituire flt;

int main ()

cout << fn1() << endl;
cout << fn2() << endl;
restituzione 0;

L'output è:

5
2.7

Le variabili "esso" e ft sono di diversi tipi. Considerando prima la variabile "It": "It" è visto nella sua linea di dichiarazione. Alcune linee vengono saltate. Viene quindi visto nella firma di Fn1 (). È anche visto in tutto il corpo di Fn1 (). Alcune linee e una parte vengono saltate. Può quindi essere visto in tutto il corpo della funzione principale (). In realtà, viene visto indirettamente, nella prima dichiarazione della funzione principale (), tramite la funzione di funzione fn1 (). Le porzioni per la variabile "It" sono appena state illustrate.

Considerando ora la variabile ft: FT è visto nella sua linea di dichiarazione. Alcune linee e una porzione (definizione FN1) vengono saltate. Viene saltata una linea vuota. Viene quindi visto nella firma di Fn2 (). È visto in tutto il corpo di fn2 (). Può quindi essere visto in tutto il corpo della funzione principale (). In realtà, viene visto indirettamente, nella seconda dichiarazione della funzione principale (), attraverso la funzione di funzione Fn2 (). Le porzioni per la variabile "ft" sono appena state illustrate.

Ambito globale e variabile globale

Quando un programmatore inizia a digitare un file, questo è l'ambito globale. Considera il seguente programma:

#includere
Utilizzo dello spazio dei nomi std;
char var = 'e';
int main ()

cout <cout <<::var<<'\n';
restituzione 0;

L'output è:

E
E

In questo programma, la porzione o l'ambito di VAR inizia dal punto di dichiarazione di var, continua verso il basso fino alla fine dell'unità di traduzione (file).

Il corpo della funzione principale () è un ambito diverso a sé stante; L'ambito globale nidifica l'ambito di funzione principale ().

La variabile var è una variabile di portata globale perché può essere vista ovunque nel file, a partire da dove è stato dichiarato. Può essere visto nell'ambito di funzione principale (). Nel programma precedente, "It" e FT sono variabili di portata globali. Ognuno potrebbe essere visto nella sua linea di dichiarazione, nell'ambito di funzione e nell'ambito di funzione principale ().

Per accedere a una variabile globale (variabile dell'ambito globale) da un ambito diverso, il nome della variabile viene utilizzato direttamente o preceduto dall'operatore di risoluzione dell'ambito, :: come mostrato nel programma sopra.

Spiegare il codice: tutti i programmi in C ++ dovrebbero iniziare con almeno le prime due righe con cui questo programma inizia. Le linee sono:

#includere
Utilizzo dello spazio dei nomi std;

La prima riga qui non è un'affermazione; È una direttiva, una direttiva di inclusione. Include la libreria di flusso di input/output, che è responsabile dell'invio di output al terminale e della ricezione dell'input dalla tastiera. Il terminale e la tastiera insieme sono chiamati console. Questa libreria si chiama biblioteca iostream (i.e., la libreria di flusso di input/output).

La seconda riga del programma non è una direttiva; È un'affermazione e termina con un punto e virgola. Dice che qualsiasi nome usato di seguito proviene dallo spazio dei nomi standard se non diversamente. Potrebbe interessare il lettore, sapere che lo spazio dei nomi ha un ambito; Tuttavia, ciò non sarà affrontato in questo articolo.

La prossima dichiarazione, sotto le prime due righe, è una dichiarazione completa della variabile char. Nella funzione principale (), le prime due righe stampano il valore della stessa variabile al terminale in modi leggermente diversi.

Blocco l'ambito e la variabile globale

Esempi di dichiarazioni composte sono le istruzioni IF, why, do o switch. Ognuna di queste dichiarazioni composte può avere un blocco. Una variabile di portata a blocchi è una variabile definita in un blocco. Il suo ambito inizia al suo punto di dichiarazione e termina alla fine del suo blocco. Una variabile globale è normalmente definita all'esterno e al di sopra di questo blocco. Una variabile globale può essere vista al di fuori di questo blocco, nella linea di intestazione di questo blocco e all'interno del blocco. Il seguente programma lo illustra con un IF-Block:

#includere
Utilizzo dello spazio dei nomi std;
int i = 5;
int main ()

cout << "First i is: " << i << endl;
if (i == 5)
cout << "Second i is same: " << i << endl;

restituzione 0;

L'output è:

Prima io è: 5
Secondo I è lo stesso: 5

Il blocco if è un blocco nidificato per l'ambito della funzione principale (), che è un blocco nidificato per l'ambito globale. Questo programma mostra che le variabili globali possono essere viste in blocchi nidificati.

Prevalere nel blocco nidificato

Una variabile globale può essere annullata in un blocco nidificato. Cioè, una variabile globale può essere sostituita da una variabile con lo stesso nome in un blocco nidificato. Nel seguente programma, sono sostituito da un'altra entità, un galleggiante, in un blocco nidificato. E questa è la regola: una variabile in un ambito nidificato con lo stesso nome di uno al di fuori dell'ambito prevalga quella variabile esterna. Quindi, per l'ambito nidificato, la variabile dichiarata al di fuori dell'ambito nidificato con lo stesso nome non può essere vista all'interno dell'ambito nidificato; Perché quello all'interno dell'ambito nidificato ha preso il suo posto all'interno dell'ambito nidificato. Quello all'interno dell'ambito nidificato è visto dal suo punto di dichiarazione fino alla fine del suo blocco. Quello all'interno dell'ambito nidificato non ha bisogno di avere alcuna relazione con quella al di fuori dell'ambito nidificato. Il programma è:

#includere
Utilizzo dello spazio dei nomi std;
int i = 5;
int main ()

cout << "First i is: " << i << endl;
if (i == 5)
Float i = 7.0;
cout << "Second i is different: " << i << endl;

restituzione 0;

L'output è:

Prima io è: 5
Secondo I è diverso: 7

La variabile sovrascritta è dello stesso nome e può ancora essere dello stesso tipo.

Ambito da funzione normale e variabile globale

Considera il seguente programma:

#includere
Utilizzo dello spazio dei nomi std;
int fn (int integ);
int i = 5;
int fn (int integ = i)

/ * dichiarazioni */
restituire integ;

int main ()

cout << fn() << endl;
restituzione 0;

L'output è 5. La regione dichiarativa della funzione fn () è costituita dalla linea "int fn (int integ);" del suo prototipo, la parte della sua definizione nell'ambito globale e la dichiarazione di chiamata nel corpo della funzione principale. Tutte queste linee e porzioni formano l'ambito della funzione fn (). La firma della funzione di fn () fa parte dell'ambito della funzione (così come del corpo). Ora, la variabile globale, sono stato visto in tutte le linee o parti della funzione FN.

Considera il seguente programma, con classi e oggetti istanziati:

#includere
Utilizzo dello spazio dei nomi std;
int i = 5;
Classe calc
privato:
int PM = i;
pubblico:
void mfn (int inte = i)

cout << inte << endl;

;
Classe DCLA: CALC pubblico

pubblico:
int dm = i;
;
int main ()

Calc obj;
obj.mfn ();
Dcla dobj;
cout << dObj.dM << endl;
restituzione 0;

L'output è:

5
5

Il programma ha una classe di base, calc e la sua classe derivata, DCLA. La classe base è pubblica della classe derivata: questo significa che la classe derivata può vedere i membri protetti della classe base. Quindi le porzioni per la classe, calc, sono il suo blocco e il blocco della classe derivata, DCLA. Cioè, ci sono due porzioni per l'ambito della classe, calc. Ora, la variabile globale, sono visto in queste due porzioni.

Conclusione

È necessario identificare una posizione di memoria ed è identificata con un nome, chiamato variabile. La lunghezza di un programma, dall'alto verso il basso, ha porzioni diverse che fanno cose diverse. Alcune porzioni sono correlate ma discontinue per lunghezza. Gli intervalli per la lunghezza delle porzioni discontinue hanno altre porzioni, che sono correlate ad altre porzioni.

Un ambito è un insieme di porzioni correlate in cui una variabile può essere utilizzata o vista. Gli ambiti hanno nomi. Una variabile globale è una variabile che può essere vista in ogni portata del programma. Una variabile globale può essere di qualsiasi tipo.