czwartek, 26 kwietnia 2018

Język C - zakresy


C - Zasady dotyczące zakresu

Zakres w dowolnym programowaniu jest regionem programu, w którym zdefiniowana zmienna może mieć swój byt i poza tą zmienną nie może być dostępna. Istnieją trzy miejsca, w których można zadeklarować zmienne w języku programowania C -
·      Wewnątrz funkcji lub bloku, który jest nazywany zmiennymi lokalnymi.
·      Poza wszystkimi funkcjami, które są nazywane zmiennymi globalnymi.
·      W definicji parametrów funkcji, które nazywane są parametrami formalnymi.
Rozumiemy, czym są zmienne lokalne i globalne oraz parametry formalne.

Zmienne lokalne

Zmienne zadeklarowane w funkcji lub bloku są nazywane zmiennymi lokalnymi. Mogą być używane tylko przez instrukcje znajdujące się wewnątrz tej funkcji lub bloku kodu. Zmienne lokalne nie są znane funkcjom zewnętrznym. Poniższy przykład pokazuje, w jaki sposób używane są zmienne lokalne. Tutaj wszystkie zmienne a, b i c są lokalnymi dla funkcji main().

#include <stdio.h>

int main () {

  /* deklarowanie lokalnych zmiennych */
  int a, b;
  int c;

  /* incjalizacja zmiennych */
  a = 10;
  b = 20;
  c = a + b;

  printf ("wartość a = %d, b = %d i c = %d\n", a, b, c);

  return 0;
}  

Zmienne globalne

Zmienne globalne są definiowane poza funkcją, zazwyczaj na górze programu. Zmienne globalne przechowują swoje wartości przez cały czas trwania programu i można je uzyskać w dowolnej funkcji zdefiniowanej dla programu.
Do zmiennej globalnej można uzyskać dostęp za pomocą dowolnej funkcji. Oznacza to, że zmienna globalna jest dostępna do użycia w całym programie po jej deklaracji. Poniższy program pokazuje, w jaki sposób zmienne globalne są używane w programie.

#include <stdio.h>

/* deklaracja zmiennej globalnej */
int g;

int main () {

  /* deklaracja zmiennej lokalnej */
  int a, b;

  /* incjalizacja zmiennych */
  a = 10;
  b = 20;
  g = a + b;

  printf ("wartosc a = %d, b = %d i g = %d\n", a, b, g);

  return 0;
}
Program może mieć tę samą nazwę dla zmiennych lokalnych i globalnych, ale preferowana jest wartość zmiennej lokalnej w funkcji. Oto przykład -

#include <stdio.h>

/* deklaracja zmiennej globalnej */
int g = 20;

int main () {

  /* deklaracja zmiennej lokalnej */
  int g = 10;

  printf ("wartosc g = %d\n",  g);

  return 0;
}
Gdy powyższy kod zostanie skompilowany i wykonany, generuje następujący wynik:
wartosc g = 10

Formalne parametry

Formalne parametry są traktowane jako zmienne lokalne w funkcji i mają pierwszeństwo przed zmiennymi globalnymi. Oto przykład -

#include <stdio.h>

/* deklaracja zmiennej globalnej */
int a = 20;

int main () {

  /* deklaracja zmiennej lokalnej w funkcji main() */
  int a = 10;
  int b = 20;
  int c = 0;

  printf ("wartosc a w main() = %d\n",  a);
  c = sum( a, b);
  printf ("wartosc c w main() = %d\n",  c);

  return 0;
}

/* funkcja dodająca dwie liczby całkowite */
int suma(int a, int b) {

   printf ("wartosc a w suma() = %d\n",  a);
   printf ("wartosc b w suma() = %d\n",  b);

   return a + b;
}
Gdy powyższy kod zostanie skompilowany i wykonany, generuje następujący wynik:
wartosc a in main() = 10
wartosc a in suma() = 10
wartosc b in suma() = 20
wartosc c in main() = 30

Inicjowanie zmiennych lokalnych i globalnych

Gdy zdefiniowana jest zmienna lokalna, nie jest ona inicjowana przez system, należy ją zainicjować samodzielnie. Zmienne globalne są inicjowane automatycznie przez system, gdy zdefiniujesz je w następujący sposób:
Typ danych
Początkowa wartość domyślna
int
0
char
'\0'
float
0
double
0
pointer
NULL
Dobrą praktyką programistyczną jest prawidłowe inicjowanie zmiennych, w przeciwnym razie program może dawać nieoczekiwane wyniki, ponieważ niezainicjowane zmienne przyjmą pewną wartość śmieciową już dostępną w ich pamięci.

Poprzednia strona                                                          Następna strona

Brak komentarzy:

Prześlij komentarz