CATEGORII DOCUMENTE |
Variabilelor li se pot atribui valori initiale. Pentru variabilele globale valorile initiale se atribuie prin definitiile lor, iar in cazul celorlalte variabile se pot atribui valori prin declaratiile lor. Pentru ca de multe ori am folosit cuvintele definitia variabilelor sau declaratiile varibilelor precizam ca ele au inteles distinct in anumite contexte. O variabila globala se defineste o singura data si se poate declara ori de cate ori e necesara utilizarea ei in alte fisiere (evident declarata externa). In cazul celorlalte tipuri de variabile definitiile si declaratiile coincid. Totodata definitia si declaratia (prototipul) unei functii nu coincid.
O variabila simpla se poate initializa printr-o declaratie de forma:
tip nume=expresie;
Variabilelor globale si statice li se atribuie valori initiale la lansarea programului. Expresia utilizata in cazul acestor variabile trebuie sa fie o expresie constanta care sa poata fi evaluata de compilator la intalnirea ei. Aceasta, deoarece variabilele globale si statice se initializeaza prin valori definite la compilare.
Variabilele automatice se initializeaza la executie, de fiecare data cand se activeaza functia in care sunt declarate. Din aceasta cauza, nu mai este necesar ca expresia sa fie o expresie constanta. Totusi, la intalnirea ei, trebuie sa fie definiti operanzii expresiei de initializare.
Exemplu:
void f(int n)
La intalnirea expresiei i+n sunt deja definiti ambii operanzi:
i a fost in prealabil initializat cu valoarea 10;
n are o valoare care e transferata la apel.
Variabilele globale si statice neinitializate au implicit valoarea egala cu zero, iar varibilele automatice neinitializate au o valoare initiala imprevizibila.
Tablourile se pot initializa printr-o lista de expresii incluse intre acolade. Astfel un tablou unidimensional se poate initializa folosind urmatorul format:
tip nume[n] =
La initializarea tablourilor se pot utiliza numai expresii constante. Numarul expresiilor poate fi mai mic decat numarul elementelor tabloului. Elementele neinitializate au valoarea zero in cazul tablourilor globale si statice. Daca se initializeaza fiecare element al tabloului atunci numarul n al elementelor acestuia nu mai este obligatoriu in declaratia tabloului respectiv. Deci se poate scrie astfel:
tip nume[ ] =
Numarul elementelor tabloului se considera ca este egal cu cel al expresiilor care realizeaza initializarea lor.
Pentru un tablou bidimensional vom folosi urmatoarea structura:
tip nume [n][m] = , // pentru linia intai
, // pentru linia a doua
. . .
, // pentru ultima linie
}
Numarul expresiilor poate fi mai mic decat m in oricare din acoladele corespunzatoare celor n linii ale tabloului bidimensional. In acest caz se poate omite doar numarul n (al liniilor tablourilor), m fiind obligatoriu. Formatul de initializare a tablourilor bidimensionale se extinde imediat pentru tablouri cu mai multe dimensiuni.
Tablourile de tip caracter pot fi initializate folosind un format mai simplu decat cel indicat anterior. Astfel, un tablou de tip caracter se poate initializa printr-o declaratie de forma:
char sir[n] = sir_de_caractere;
Evident, marginea superioara n poate fi omisa si in acest caz. Totodata compilatorul pune automat caracterul NUL dupa ultimul caracter al sirului utilizat in initializare.
Exemple:
1) int itab[] = // tabloul de tip intreg are 5 elemente itab[0] = 1,. . . itab[4] = 5
2) int m[3][3] = ,,}; // tabloul are 3 linii si 3 coloane.
Elementele primei linii sunt initializate astfel:
m[0][0] = -1;
m[0][1] = 0;
m[0][2] = 1;
In linia a doua se initializeaza numai m[1][0] = -1; Daca tabloul ar fi declarat global sau static atunci m[1][1] si m[1][2] ar avea valoarea zero. Altfel ele au o valoare imprevizibila.
Elementele ultimei linii se initializeaza astfel:
m[2][0] = 0;
m[2][1] = 1;
declaratiile de mai jos sunt identice:
char sir [ ] = ;
char sir [ ] = ;
Politica de confidentialitate | Termeni si conditii de utilizare |
Vizualizari: 653
Importanta:
Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved