C ++ globalne zmienne

C ++ globalne zmienne
Lokalizacja pamięci musi zostać zidentyfikowana i jest identyfikowana według nazwy, zwanej zmienną. Długość programu, od góry do dołu, ma różne porcje, które robią różne rzeczy. Niektóre części są powiązane, ale nieciągłe długość. Odstępy od długości nieciągłych porcji mają inne porcje, które są związane z innymi częściami.

Zakres to zestaw powiązanych części, w których można użyć lub zobaczyć zmienną. Rozpadki mają nazwy. Zmienna globalna to zmienna, którą można zobaczyć w każdym zakresie programu. Zmienna globalna może być różnych typów. W tym artykule wyjaśniono, w jaki sposób zmienną globalną można zobaczyć w powszechnych zakresach.

Treść artykułu

  • Powiązane porcje
  • Globalny zakres i zmienna globalna
  • Zakres bloków i zmienna globalna
  • Normalny zakres funkcji i zmienne globalne
  • Zakres klasowy i zmienna globalna
  • Wniosek

Powiązane porcje

Rozważ następujący program:

#włączać
za pomocą przestrzeni nazw Std;
int it = 5;
float ft = 2.7;
int fn1 (int ing = it)

/* sprawozdania */
powrót Integ;

float fn2 (float flt = ft)

/* sprawozdania */
return flt;

int main ()

Cout << fn1() << endl;
Cout << fn2() << endl;
powrót 0;

Wyjście to:

5
2.7

Zmienne „to” i ft są różnych typów. Biorąc pod uwagę zmienną „to” najpierw: „It” jest widoczny w linii deklaracji. Niektóre linie są pomijane. Jest to wówczas widoczne w podpisie fn1 (). Jest to również widoczne w całym ciele FN1 (). Niektóre linie i porcja są pomijane. Można to zobaczyć w całym ciele funkcji main (). W rzeczywistości widać to pośrednio, w pierwszym stwierdzeniu funkcji main (), za pośrednictwem wywołania funkcji fn1 (). Części dla zmiennej „IT” zostały właśnie zilustrowane.

Biorąc pod uwagę zmienną ft teraz: ft jest widoczny w linii deklaracji. Niektóre linie i część (definicja FN1) są pomijane. Pusta linia jest pomijana. Jest to wówczas widoczne w podpisie fn2 (). Jest widoczny w całym ciele fn2 (). Można to zobaczyć w całym ciele funkcji main (). W rzeczywistości widać to pośrednio, w drugim stwierdzeniu funkcji main (), za pośrednictwem wywołania funkcji fn2 (). Właśnie zilustrowano części zmiennej „ft”.

Globalny zakres i zmienna globalna

Kiedy programista po prostu zaczyna pisać plik, to jest globalny zakres. Rozważ następujący program:

#włączać
za pomocą przestrzeni nazw Std;
char var = „e”;
int main ()

Cout <Cout <<::var<<'\n';
powrót 0;

Wyjście to:

mi
mi

W tym programie część lub zakres VAR zaczyna się od punktu deklaracji var, trwa w dół do końca jednostki tłumaczenia (plik).

Ciało funkcji Main () jest sam w sobie inny zakres; Globalny zakres gniazduje zakres funkcji Main ().

Zmienna var jest globalną zmienną zakresu, ponieważ można ją zobaczyć wszędzie w pliku, poczynając od miejsca, w którym została zadeklarowana. Można to zobaczyć w zakresie funkcji main (). W poprzednim programie „IT” i FT to globalne zmienne zakresu. Każdy można zobaczyć w swojej linii deklaracji, w zakresie funkcji i w zakresie funkcji main ().

Aby uzyskać dostęp do zmiennej globalnej (zmienna globalnego zakresu) z innego zakresu, nazwa zmiennej jest używana bezpośrednio lub poprzedzona przez operatora rozdzielczości zakresu :: Jak pokazano w powyższym programie.

Wyjaśnienie kodu: Wszystkie programy w C ++ powinny zacząć od co najmniej dwóch pierwszych wierszy, od których rozpoczyna się ten program. Linie to:

#włączać
za pomocą przestrzeni nazw Std;

Pierwszy wiersz tutaj nie jest stwierdzeniem; Jest to dyrektywa, dyrektywa włączenia. Obejmuje bibliotekę strumienia wejściowego/wyjściowego, która jest odpowiedzialna za wysyłanie wyjścia do terminalu i odbieranie wejść z klawiatury. Terminal i klawiatura razem nazywane są konsolą. Ta biblioteka nazywa się biblioteką iostream (i.mi., biblioteka strumienia wejściowego/wyjściowego).

Druga linia w programie nie jest dyrektywą; jest to stwierdzenie, które kończy się półkolisem. Mówi każda nazwa używana poniżej, pochodzi ze standardowej przestrzeni nazw. Może zainteresować czytelnika, wiedząc, że przestrzeń nazw ma zakres; Jednak nie zostanie to rozwiązane w tym artykule.

Następne stwierdzenie, poniżej dwóch pierwszych wierszy, jest pełną deklaracją zmienną Char. W funkcji Main () pierwsze dwa linie wydrukują wartość tej samej zmiennej na terminalu w nieco różne sposoby.

Zakres bloków i zmienna globalna

Przykładami instrukcji złożonych to If, podczas gdy, dla instrukcji dla lub przełączania. Każde z tych złożonych instrukcji może mieć blok. Zmienna zakresu bloku to zmienna zdefiniowana w bloku. Jego zakres zaczyna się w punkcie deklaracji i kończy na końcu bloku. Zmienna globalna jest zwykle zdefiniowana na zewnątrz i powyżej tego bloku. Zmienną globalną można zobaczyć poza tym blokiem, w linii nagłówka tego bloku i wewnątrz bloku. Poniższy program ilustruje to blokiem if:

#włączać
za pomocą przestrzeni nazw Std;
int i = 5;
int main ()

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

powrót 0;

Wyjście to:

Po pierwsze, to: 5
Drugi jest taki sam: 5

Block if jest zagnieżdżonym blokiem do zakresu funkcji Main (), który jest zagnieżdżonym blokiem globalnego zakresu. Ten program pokazuje, że zmienne globalne można zobaczyć w zagnieżdżonych blokach.

Zastępowanie w zagnieżdżonym bloku

Zmienną globalną można zastąpić w zagnieżdżonym bloku. To znaczy zmienną globalną można zastąpić zmienną o tej samej nazwie w zagnieżdżonym bloku. W poniższym programie zastępuje mnie inny byt, pływak, w zagnieżdżonym bloku. I to jest reguła: zmienna w zagnieżdżonym zakresie o tej samej nazwie co ta poza zakresem zastępuje tę zmienną zewnętrzną. Tak więc, dla zagnieżdżonego zakresu, zmienna zadeklarowana poza zagnieżdżonym zakresem o tej samej nazwie nie można zobaczyć w zagnieżdżonym zakresie; Ponieważ ten w zagnieżdżonym zakresie zajął swoje miejsce wewnątrz zagnieżdżonego zakresu. Ten w zasięgu zagnieżdżonego jest widoczny od jego punktu deklaracji do końca bloku. Ten wewnątrz zagnieżdżonego zakresu nie musi mieć żadnego związku z tym poza zagnieżdżonym zakresem. Program to:

#włączać
za pomocą przestrzeni nazw 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;

powrót 0;

Wyjście to:

Po pierwsze, to: 5
Drugi jestem inny: 7

Zastępowana zmienna ma tę samą nazwę i nadal może być tego samego typu.

Normalny zakres funkcji i zmienna globalna

Rozważ następujący program:

#włączać
za pomocą przestrzeni nazw Std;
int fn (int ing);
int i = 5;
int fn (int ing = i)

/* sprawozdania */
powrót Integ;

int main ()

Cout << fn() << endl;
powrót 0;

Wyjście to 5. Deklarujący region funkcji fn () składa się z linii „int fn (int ing);” z jego prototypu, część jego definicji w globalnym zakresie i instrukcja wywołania w głównym ciele funkcji. Wszystkie te linie i części tworzą zakres funkcji fn (). Podpis funkcji FN () jest częścią zakresu funkcji (a także ciała). Teraz zmienna globalna była widziana we wszystkich liniach lub częściach funkcji FN.

Rozważ następujący program, z klasami i instancjami:

#włączać
za pomocą przestrzeni nazw Std;
int i = 5;
klasa calc
prywatny:
int pm = i;
publiczny:
void mfn (int inte = i)

Cout << inte << endl;

;
klasa DCLA: Public Calc

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

CALC OBJ;
obj.mfn ();
Dcla dobj;
Cout << dObj.dM << endl;
powrót 0;

Wyjście to:

5
5

Program ma klasę podstawową, Calc i jej klasę pochodną, ​​DCLA. Klasa podstawowa jest publiczna w klasie pochodnej: oznacza to, że klasa pochodna może zobaczyć chronionych członków klasy podstawowej. Tak więc części dla klasy, KALC, są jej blokiem i blokiem klasy pochodnej, DCLA. Oznacza to, że istnieją dwie części dla zakresu klasy, Calc. Teraz zmienna globalna jest widoczna w tych dwóch porcjach.

Wniosek

Lokalizacja pamięci musi zostać zidentyfikowana i jest identyfikowana według nazwy, zwanej zmienną. Długość programu, od góry do dołu, ma różne porcje, które robią różne rzeczy. Niektóre części są powiązane, ale nieciągłe długość. Odstępy od długości nieciągłych porcji mają inne porcje, które są związane z innymi częściami.

Zakres to zestaw powiązanych części, w których można użyć lub zobaczyć zmienną. Rozpadki mają nazwy. Zmienna globalna to zmienna, którą można zobaczyć w każdym zakresie programu. Zmienna globalna może być dowolnego typu.