Obszary dostępu do zmiennych

Stronę tą wyświetlono już: 268 razy

Zmienne można podzielić pod względem dostępu do nich na globalne i lokalne. Globalne zmienne nie znajdują się ani w ciele żadnej funkcji, ani też metody klasy czy też w bloku instrukcji warunkowych i pętli, przez co tego typu zmienne są widoczne dla całego obszaru kodu programu, który znajduje się po deklaracji danej zmiennej. Zmienne lokalne mogą mieć taką samą nazwę co zmienne globalne i w takim przypadku mówi się, że zmienna lokalna przysłoniła zmienną globalną. Zmiennymi lokalnymi są również argumenty funkcji. Prosty przykład:

Listing 1
  1. #include <iostream>
  2. using namespace std;
  3. void Function1(){
  4. // cout<<x; // odkomentowanie tej linii spowoduje błąd podczas kompilacji, gdyż zmienna globalna x została zadeklarowana dopiero po deklaracji tej funkcji
  5. }
  6. int x = 100;
  7. void Function2(){
  8. cout<<x<<endl<<endl; // tutaj funkcja odwołuje się do zmiennej globalnej
  9. }
  10. void Function3(int x){
  11. cout<<x<<endl<<endl; // tutaj zmienna globalna została przysłonięta przez zmienną z listy funkcji
  12. }
  13. void Function4(){
  14. int x = 200; // ta deklaracja zmiennej lokalnej przysłania zmienną globalną
  15. cout<<x<<endl<<endl; // wyświetli 200 a nie 100, bo odwołuje się do zmiennej lokalnej a nie globalnej x
  16. }
  17. int main(){
  18. cout<<"Wysolanie funkcji, ktora odwoluje sie do zmiennej globalnej x: ";
  19. Function2();
  20. cout<<"Wysolanie funkcji, ktora odwoluje sie do zmiennej x, podanej jako argument funkcji: ";
  21. Function3(10);
  22. cout<<"Wysolanie funkcji, ktora odwoluje sie do zmiennej lokalnej x: ";
  23. Function4();
  24. cout<<"Wcisnij dowolny przycisk, aby zamknac program...";
  25. cin.get();
  26. return 0;
  27. }

Komentarze