Documente Academic
Documente Profesional
Documente Cultură
struct nume_structura{
tip_camp1 nume_camp1;
tip_camp2 nume_camp2;
...
tip_campn nume_campn;
};
unde definit, ia structurii ncepe ntodeauna folosind cuvantul cheie struct urmat de un nume
pentru structura. Un nume valid de structura, ca s, i n cazul numelor de variabile reprezinta
orice nume care ncepe cu o litera sau caracterul s, i poate cont, ine cifre. Dupa cum se
paote observa, corpul definit, iei unei structuri este delimitat de acolade s, i cont, ine cel put, in
unul sau mai multe campuri. Fiecare camp este o declarat, ie de variabila (cu tip s, i nume) s, i
reprezinta unul din atributele (sau proprietat, ile) structurii.
Declarat, ia unei variabile de tip structura se realizeaza dupa cum urmeaza:
1
struct nume_structura a;
unde struct nume structura reprezinta tipul de date anterior definit, iar a reprezita numele variabilei.
Totodata, n momentul definit, iei unei structuri se pot declara s, i variabile de tipul structurii
folosind urmatoarea sintaxa:
1
1
2
3
4
5
6
struct nume_structura{
tip_camp1 nume_camp1;
tip_camp2 nume_camp2;
...
tip_campn nume_campn;
} x,y;
unde x s, i y reprezinta doua variabile de tipului structurii definite, analoage cu variabila a din
expemplul anterior. O particularitate legata de declarat, ia de variabile n momentul definit, iei
unei structuri este aceea ca numele structuri se poate omite folosind sitaxa de mai jos:
1
struct{
tip_camp1 nume_camp1;
tip_camp2 nume_camp2;
...
tip_campn nume_campn;
2
3
4
5
6
} x,y;
unde variabilele x s, i y au aceasi contat, ie ca s, i cazul anterior, numai ca n acest caz structura
se numes, te anonima deoarce nu are nume. Astfel, o consecinta pentru definit, ia unei structuri
anomime este ca declarat, iile de variabile trebuie relizate n momentul definit, iei structurii.
Orice declarat, ie de varibile ulterioara, n acest caz, nefiind posibila deoarce numele structurii
nu exista.
O simplificare a declarat, iilor de variabile de tip structura se poate realiza folosind cuvantul
cheie typedef cu sintaxa urmatoare:
1
2
3
4
5
6
aici nume tip structura nu mai reprezinta o variabila, ci un tip de date datorita folosirii
cuvantului cheie typedef. Altfel spus, folosind typedef se realizeaza o re-definit, ie a tipului
struct nume structura la tipul nume tip structura. Totodata, typedef se poate utiliza
pentru re-defint, ia tipului unei structuri anonime:
1
2
3
4
5
6
typedef sturct{
tip_camp1 nume_camp1;
tip_camp2 nume_camp2;
...
tip_campn nume_campn;
} nume_tip_stucura;
2
In ambele cazuri (structuri cu nume sau anonime) declarat, ia de variabile ulterioara se poate
face folosind sintaxa:
1
nume_tip_structura a,b;
unde a s, i b reprezinta declarat, ia a doua variabile de tipul structurii re-definit prin utlizarea
cuvatului cheie typedef.
Init, ializarea campurilor unei structuri se poate realiza (in place) n momentul declaratiei
variabilelor prin:
1
2
3
4
5
similara cu sintaxa utilizata la init, ializarea (in place) a vectorilor; sau ulterior prin accesul
la capurile structurii:
1
2
3
4
5
6
unde campurile au fost accesate prin folosirea variabilei a s, i punct pentru accesul unui anumit camp.
In cazul utilizarii pointerilor la structuri alocarea s, i accesul la elementele individuale se poate
realiza folosind urmatoarea sintaxa:
1
2
3
4
5
6
7
8
9
2. Exemplu de program
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
int main(void){
// Declaratie si intializare var locala (in place)
Date x = {25,12,1989};
20
21
22
23
y->zi = 25;
y->luna = 12;
y->an = 1989;
24
25
26
27
printDate(&x);
printf("\n");
printDate(y);
28
29
30
31
free(y);
return 0;
32
33
34
3. Cerint, e
Cerint, a 1 Sa se defineasca un tip structura pentru un numar complex format din doua
numere reale (de tip float). Implementat, i cateva funct, ii pentru cateva operatii cu numere
complexe reprezentate prin structuri: afisarea unui numar complex, adunarea a doua numere
complexe, inmult, irea a 2 numere complexe, ridicarea la o putere intreaga a unui numar
complex. Se va scrie s, i funct, ia main pentru verificarea acestor funct, ii.
Cerint, a 2 Sa se defineasca o structura care cont, ine un vector de intregi s, i dimensiunea sa.
Implementat, i doua funct, ii pentru afis, area unui vector s, i pentru citirea unui vector, avand ca
parametru o variabila sructura s, i respectiv un pointer la structura vector. Sa se verifice cele
doua funct, ii prin apelarea lor n funct, ia principala main.
Cerint, a 3 Sa se defineasca o structura care contine un nume (s, ir de max. 20 de caractere)
s, i un numar real. Sa se scrie un program care cites, te o lista de nume de student, i s, i medii
(introduse de la tastatura) ntr-un vector de structuri (de tipul definit) s, i apoi calculeaza s, i
afis, eaza media globala a tuturor student, ilor.