Lekcja 24
Zasięg zmiennych w języku C++. Zmienne globalne i zmienne lokalne.
Wprowadzenie
Jeśli dokładnie śledzisz wszystkie przykłady zamieszczone w kursie, udało Ci się na pewno spostrzec, że wszystkim zmiennym w naszych programach nadawaliśmy unikalne nazwy. Inaczej mówiąc, nie zdarzyło się, aby dwie zmienne w programie miały taką samą nazwę.
Nie zawsze jednak tak właśnie musi być. Co prawda zmienne muszą mieć w programie inne nazwy, ale tylko w tym samym zasięgu. Jeśli chcesz zrozumieć to zagadnienie, to zapraszam do przeczytania tej oraz także następnej lekcji kursu. W obu lekcjach, postaram Ci się wyjaśnić wszystko, co jest związane ze zmiennymi.
Rodzaje zmiennych
Mimo że w języku C i C++ występuje wiele rodzajów zmiennych, to ze względu na tematykę tej lekcji zajmiemy się tylko jednym podziałem zmiennych. Wszystkie zmienne można podzielić na zmienne globalne i zmienne lokalne.
W dużym uproszczeniu różnica między tymi dwoma rodzajami zmiennych jest następująca: zmienne globalne są to takie zmienne, które są dostępne w całym programie i przez cały czas jego działania, natomiast zmienne lokalne są dostępne tylko w pewnej części programu, zazwyczaj tylko w pewnej chwili działania programu, a nie przez cały czas.
Zmienne globalne
Zaletą zmiennych globalnych jest to, że są one widoczne w całym programie. Nie miało to dużego znaczenia w przypadku naszych dotychczasowych programach, jednak nabierze bardzo dużego znaczenia, kiedy przedstawię Ci pojęcie funkcji w C++.
Zmienne globalne deklaruje się (i ewentualnie inicjalizuje) pomiędzy blokiem dołączonych plików nagłówkowych a funkcją main. Ponieważ są to zwykłe zmienne (mają tylko dodatkowe właściwości), to deklaracja, inicjalizacja oraz posługiwanie się tymi zmiennymi wygląda dokładnie tak samo, jak to robiliśmy w dotychczasowych programach.
Ponieważ zmienne globalne są widoczne w całym programie, zatem są również widoczne wewnątrz funkcji main. Oznacza to, że wewnątrz funkcji main (oraz wszystkich innych funkcji), możemy dokonywać wszystkich operacji jakie są tylko możliwe dla zmiennej danego typu.
Wszystkie powyższe rozważania dotyczące zmiennych globalnych podsumuje poniższy przykład:
#include <iostream>
#include <cstring>
using namespace std;
/* Tutaj tworzymy zmienne globalne */
int liczbaPierwsza = 2; // definicja i inicjalizacja
float liczbaDruga; // definicja bez inicjalizacji
string napis="Przyklad"; // definicja i inicjalizacja
int main()
{
// wypisanie wartosci zmiennych globalnych
cout <<"Oto biezace wartosci zmiennych globalnych: "<<endl;
cout <<liczbaPierwsza<<' '<<liczbaDruga<<' '<<napis<<endl;
// wykonanie dowolnych operacji na zmiennych globalnych
++liczbaPierwsza;
liczbaDruga=3;
napis="Zmieniona zmienna globalna";
// wypisanie wartosci zmiennych globalnych
cout <<"Oto biezace wartosci zmiennych globalnych: "<<endl;
cout <<liczbaPierwsza<<' '<<liczbaDruga<<' '<<napis<<endl;
cout <<endl<<"Nacisnij ENTER aby zakonczyc..."<<endl;
getchar();
return 0;
}
program nr 24.1