Funkcje w języku C++
1. Zasięg zmiennej określa zakres widoczności nazwy zmiennej w obrębie pliku.
2. Ze względu na zasięg zmiennej rozróżniamy zmienne globalne i lokalne:
3. Zmienne globalne w języku C++ deklarujemy poza funkcjami.
4. Stosowanie zmiennej lokalnej.
void Usmiechy()
{
int k;
cin >>k;
if (k>0) for (i=0; i<20; i++) cout << ":-)";
else for (i=0; i<20; i++) cout << ":-(";
}
5. Przesyłanie zmiennej globalnej.
#include <iostream>
using namespace std;
int i;
void Usmiechy()
{
int i;
for (i=0; i<20; i++) cout << ":-)";
}
int main ()
{
i=10;
Usmiechy();
cout<<i;
return 0;
}
------------------------------------------------------------------
int main ()
{
for (i=0; i<20; i++) cout << ":-)";
cout << endl;
return 0;
}
Zasięg zmiennej to w programowaniu fragment programu (np. obszar lub blok kodu) z którym skojarzone są wartości lub wyrażenia (np. zmienne). Różne języki programowania posiadają różne rodzaje zasięgów widoczności.
Zasięgu najczęściej używa się do:
- kontrolowania cyklu życia zmiennych
- kontrolowania widoczności i dostępności zmiennych i stałych w obrębie programu
- implementacji hermetyzacji
Zasięgi mogą zawierać:
- deklaracje lub definicje identyfikatorów (np. zmiennych)
- instrukcje lub wyrażenia definiujące wykonywalny algorytm lub jego część
- inne, zagnieżdżone zasięgi
Zmienna globalna – zmienna istniejąca przez cały czas życia programu i widziana z wielu miejsc w programie.
Nadużywanie zmiennych globalnych może prowadzić do poważnych problemów, takich jak:
- w przypadku programów wielowątkowych, zmienna taka może być modyfikowana przez dowolny wątek, co prowadzić może do nieokreśloności przy braku synchronizacji wątków.
- jeśli funkcja używa zmiennej globalnej jako zmiennej pomocniczej, niemożliwe może być jej rekursywne wywołanie
- zmienne globalne zaśmiecają przestrzeń nazw, w niektórych architekturach może to doprowadzić do przepełnienia stosu
- na działanie danej części kodu może mieć wpływ kod zupełnie niezwiązany, o ile oba używają tej samej zmiennej globalnej i jeden z nich ją modyfikuje.
- zmienne globalne mogą kolidować ze zmiennymi lokalnymi (te drugie przesłaniają zmienne globalne o ile posiadają identyczne nazwy).
Zmienna lokalna – zmienna zdefiniowana i dostępna wyłącznie w określonym bloku programu, tworzona w momencie wejścia do tego bloku oraz usuwana z pamięci w momencie wyjścia z danego bloku. Tym samym zasięg zmiennej lokalnej oraz czas jej życia pokrywają się i obejmują blok, w którym zmienna lokalna jest zdefiniowana. Zmienna lokalna ma więc określony, ograniczony zakres istnienia i dostępności. To w jakich blokach programowych można tworzyć zmienne lokalne definiuje składnia konkretnego języka programowania. Typowymi blokami, w których można w różnych językach programowania tworzyć zmienne lokalne, są moduły, podprogramy oraz w pewnych językach programowania także instrukcje blokowe (lub inne instrukcje strukturalne, np. pętla for w języku C++ i inne).
3. Zmienne globalne w języku C++ deklarujemy poza funkcjami.
Zmienne te są widoczne od miejsca deklaracji do końca pliku, również w funkcjach.
Niezależnie od zmiennych globalnych można wewnątrz funkcji C++ zdeklarować zmiennie lokalne.
Zmienne te będą widoczne w C++ w części programu od miejsca deklaracji do końca funkcji. W języku C++ zmienne lokalne mogą być również widoczne tylko w obrębie jednego bloku instrukcji {}.
Próba użycia zmiennej lokalnej w programie głównym spowoduje pojawienie się podczas kompilacji błędu niezdeklarowanej zmiennej.
Zmiennym globalnym pamięć przydzielana jest na cały czas wykonywania programu, natomiast zmiennym lokalnym - tylko na czas działania procedury lub funkcji.
4. Stosowanie zmiennej lokalnej.
void Usmiechy()
{
int k;
cin >>k;
if (k>0) for (i=0; i<20; i++) cout << ":-)";
else for (i=0; i<20; i++) cout << ":-(";
}
Zmienne globalne mogą zostać przesłonięte. Zdeklarowanie w procedurze lub funkcj zmiennej lokalnej o takiej samej nazwie jak zmienna globalna spowoduje przesłonięcie zmiennej globalnej, co oznacza, że używana będzie zmienna lokalna a nie globalna.
5. Przesyłanie zmiennej globalnej.
#include <iostream>
using namespace std;
int i;
void Usmiechy()
{
int i;
for (i=0; i<20; i++) cout << ":-)";
}
int main ()
{
i=10;
Usmiechy();
cout<<i;
return 0;
}
------------------------------------------------------------------
int main ()
{
for (i=0; i<20; i++) cout << ":-)";
cout << endl;
return 0;
}
Brak komentarzy:
Prześlij komentarz