34
ROZDZIAŁ 7. ZMIENNE
int kopia_wieku; /* tu stary kompilator C zgłosi błąd */
/* deklaracja występuje po instrukcji (printf). »/ kopia.wieku ■ wiek;
Według nowszych standardów możliwe jest deklarowanie zmiennej w dowolnym miejscu programu, ale wtedy musimy pamiętać, aby zadeklarować zmienną przed jej użyciem. To znaczy, że taki kod jest niepoprawny:
printf ("Mam '/.d lat\n", wiek); int wiek ■ 17;
Należy go zapisać tak:
int wiek ■ 17;
printf ("Mam */,d lat\n", wiek);
Język C nie inicjalizuje zmiennych lokalnych. Oznacza to, że w nowo zadeklarowanej zmiennej znajdują się śmieci - to, co wcześniej zawierał przydzielony zmiennej fragment pamięci. Aby uniknąć ciężkich do wykrycia błędów, dobrze jest inicjalizować (przypisywać wartość) wszystkie zmienne w momencie zadeklarowania.
Zasięg zmiennej
Zmienne mogą być dostępne dla wszystkich funkcji programu - nazywamy je wtedy zmienny mi globalnymi. Deklaruje się je przed wszystkimi funkcjami programu:
#include <stdio.h>
int a,b; /• nasze zmienne globalne */
void fund ()
/* instrukcje */ a-3;
/* dalsze instrukcje */
int main ()
{
b-3; a=2;
return 0;
Zmienne globalne, jeśli programista nie przypisze im innej wartości podczas definiowania. są inicjalizowane wartością 0.
Zmienne, które funkcja deklaruje do “własnych potrzeb” nazywamy zmiennymi lokalnymi. Nasuwa się pytanie: “czy będzie błędem nazwanie tą samą nazwą zmiennej gloł>alnej i lokalnej?”. Otóż odpowiedź może być zaskakująca: nie. Natomiast w danej funkcji da się używać tylko jej zmiennej lokalnej. Tej konstrukcji należy, z wiadomych względów, unikać.