C ++ globale variabler

C ++ globale variabler
Et minneplassering må identifiseres, og det identifiseres med et navn, kalt en variabel. Lengden på et program, fra topp til bunn, har forskjellige porsjoner som gjør forskjellige ting. Noen porsjoner er relatert, men diskontinuerlig etter lengde. Intervallene etter lengden på de diskontinuerlige delene har andre porsjoner, som er relatert til andre porsjoner.

Et omfang er et sett med relaterte deler der en variabel kan brukes eller sees. SCOPES har navn. En global variabel er en variabel som kan sees i hvert omfang av et program. En global variabel kan være av forskjellige typer. Denne artikkelen forklarer hvordan en global variabel kan sees i vanlige omfang.

Artikkelinnhold

  • Relaterte deler
  • Globalt omfang og global variabel
  • Blokkomfang og global variabel
  • Normal funksjonsomfang og globale variabler
  • Klasseomfang og global variabel
  • Konklusjon

Relaterte deler

Tenk på følgende program:

#inkludere
ved hjelp av navneområdet STD;
int det = 5;
flyte ft = 2.7;
int fn1 (int integ = it)

/ * uttalelser */
returner helt;

float fn2 (float flt = ft)

/ * uttalelser */
returner flt;

int main ()

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

Utgangen er:

5
2.7

Variablene “IT” og FT er av forskjellige typer. Tatt i betraktning variabelen “det” først: 'It' sees i sin erklæringslinje. Noen linjer hoppes over. Det sees deretter i signaturen til FN1 (). Det blir også sett i hele kroppen av FN1 (). Noen linjer og en porsjon hoppes over. Det kan da sees i hele kroppen av hovedfunksjonen (). Egentlig sees det indirekte, i den første uttalelsen av hoved () -funksjonen, gjennom FN1 () -funksjonen. Porsjonene for variabelen “It” er nettopp illustrert.

Tatt i betraktning variabelen FT nå: FT sees i sin erklæringslinje. Noen linjer og en del (FN1 -definisjonen) hoppes over. En tom linje hoppes over. Det sees deretter i signaturen til FN2 (). Det sees i hele kroppen av FN2 (). Det kan da sees i hele kroppen av hovedfunksjonen (). Egentlig sees det indirekte, i den andre uttalelsen av Main () -funksjonen, gjennom FN2 () -funksjonen. Porsjonene for variabelen 'ft' er nettopp blitt illustrert.

Globalt omfang og global variabel

Når en programmerer bare begynner å skrive en fil, er det det globale omfanget. Tenk på følgende program:

#inkludere
ved hjelp av navneområdet STD;
char var = 'e';
int main ()

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

Utgangen er:

E
E

I dette programmet starter delen eller omfanget for VaR fra varerklæringen om VAR, fortsetter nedover til slutten av oversettelsesenheten (fil).

Hovedfunksjonens kropp er et annet omfang i seg selv; Det globale omfanget hekker hovedfunksjonen ().

Variabelen VAR er en global omfangsvariabel fordi den kan sees overalt i filen, fra hvor den er erklært. Det kan sees i hovedfunksjonen (). I det forrige programmet er "IT" og FT globale omfangsvariabler. Hver av dem kunne sees i sin erklæring, i et funksjonsomfang og i hovedfunksjonen () funksjonsomfanget.

For å få tilgang til en global variabel (variabel av det globale omfanget) fra et annet omfang, brukes variabelnavnet direkte eller forut for omfangsoppløsningsoperatøren :: Som vist i programmet ovenfor.

Forklaring av koden: Alle programmene i C ++ skal begynne med minst de to første linjene som dette programmet begynner med. Linjene er:

#inkludere
ved hjelp av navneområdet STD;

Den første linjen her er ikke en uttalelse; Det er et direktiv, et inkluderingsdirektiv. Det inkluderer inngangs-/utgangsstrømbiblioteket, som er ansvarlig for å sende utdata til terminalen og motta inngang fra tastaturet. Terminalen og tastaturet sammen kalles konsollen. Dette biblioteket kalles iostream -biblioteket (i.e., Inngangs-/utgangsstrømbiblioteket).

Den andre linjen i programmet er ikke et direktiv; Det er en uttalelse, og det ender med en semikolon. Det sier at ethvert navn som brukes under det er fra standard navneområdet med mindre annet er angitt. Det kan interessere leseren, å vite at navneområdet har et omfang; Det vil imidlertid ikke bli adressert i denne artikkelen.

Neste uttalelse, under de to første linjene, er en char -variabel fullstendig erklæring. I hovedfunksjonen () skriver de to første linjene verdien av den samme variabelen til terminalen på litt forskjellige måter.

Blokkomfang og global variabel

Eksempler på sammensatte utsagn er IF, mens, gjør, for eller bryter uttalelser. Hver av disse sammensatte utsagnene kan ha en blokk. En blokkomfangsvariabel er en variabel definert i en blokk. Omfanget starter på dets erklæring og avsluttes på slutten av blokken. En global variabel er normalt definert utenfor og over denne blokken. En global variabel kan sees utenfor denne blokken, i topplinjen til denne blokken, og inne i blokken. Følgende program illustrerer dette med en if-block:

#inkludere
ved hjelp av navneområdet STD;
int i = 5;
int main ()

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

retur 0;

Utgangen er:

Først er jeg: 5
For det andre er jeg det samme: 5

IF-blokken er en nestet blokk til hovedfunksjonen (), som er en nestet blokk for det globale omfanget. Dette programmet viser at globale variabler kan sees i nestede blokker.

Overstyring i nestet blokk

En global variabel kan overstyres i en nestet blokk. Det vil si at en global variabel kan erstattes av en variabel med samme navn i en nestet blokk. I det følgende programmet blir jeg erstattet av en annen enhet, en flottør, i en nestet blokk. Og dette er regelen: en variabel i et nestet omfang med samme navn som en utenfor omfanget overstyrer den ytre variabelen. Så for det nestede omfanget kan variabelen som er erklært utenfor det nestede omfanget med samme navn, ikke sees inne i det nestede omfanget; Fordi den i det nestede omfanget har tatt sin plass inne i det nestede omfanget. Den i det nestede omfanget sees fra dets erklæringspunkt til slutten av blokken. Den i det nestede omfanget trenger ikke å ha noe forhold til det utenfor det nestede omfanget. Programmet er:

#inkludere
ved hjelp av navneområdet 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;

retur 0;

Utgangen er:

Først er jeg: 5
For det andre er jeg annerledes: 7

Den overstyrte variabelen har samme navn og kan fremdeles være av samme type.

Normalt funksjonsomfang og global variabel

Tenk på følgende program:

#inkludere
ved hjelp av navneområdet STD;
int fn (int integ);
int i = 5;
int fn (int integ = i)

/ * uttalelser */
returner helt;

int main ()

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

Utgangen er 5. Den deklarative regionen for funksjonen fn (), består av linjen “int fn (int integ);” av prototypen, den delen av definisjonen i det globale omfanget, og anropserklæringen i hovedfunksjonsorganet. Alle disse linjene og delene danner omfanget av funksjonen fn (). Funksjonssignaturen til Fn () er en del av funksjonsomfanget (så vel som kroppen). Nå, den globale variabelen, har jeg blitt sett i alle linjene eller delene av FN -funksjonen.

Tenk på følgende program, med klasser og instantierte objekter:

#inkludere
ved hjelp av navneområdet STD;
int i = 5;
klasse Calc
privat:
int pm = i;
offentlig:
void mfn (int inte = i)

cout << inte << endl;

;
Klasse DCLA: Public Calc

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

Calc obj;
obj.mfn ();
DCLA DOBJ;
cout << dObj.dM << endl;
retur 0;

Utgangen er:

5
5

Programmet har en baseklasse, Calc, og dens avledede klasse, DCLA. Baseklassen er offentlig for den avledede klassen: Dette betyr at den avledede klassen kan se de beskyttede medlemmene i baseklassen. Så porsjonene for klassen, Calc, er dens blokkering og blokken av den avledede klassen, DCLA. Det vil si at det er to porsjoner for omfanget av klassen, Calc. Nå, den globale variabelen, blir jeg sett i disse to delene.

Konklusjon

Et minneplassering må identifiseres, og det identifiseres med et navn, kalt en variabel. Lengden på et program, fra topp til bunn, har forskjellige porsjoner som gjør forskjellige ting. Noen porsjoner er relatert, men diskontinuerlig etter lengde. Intervallene etter lengden på de diskontinuerlige delene har andre porsjoner, som er relatert til andre porsjoner.

Et omfang er et sett med relaterte deler der en variabel kan brukes eller sees. SCOPES har navn. En global variabel er en variabel som kan sees i hvert omfang av programmet. En global variabel kan være av hvilken som helst type.