PC Laborator 11
Obiective
La sfârșitul acestui laborator studenții vor fi capabili:
- să definească tipuri de date noi, de tip
struct
,union
șienum
; - să declare și să utilizele variabile de aceste tipuri în programe
Tipurile de date struct
Tipurile de date struct
sunt utilizate pentru a agrega mai multe multe varibile care au sens împreună. De exemplu, dorim să stocăm informații despre o mașină, prin urmare avem nevoie să stocăm marca, modelul, anul de fabricație, numărul de înmatriculare, culoarea, etc. Putem în acest caz să definim o structură numită Masina care să stocheze aceste valori. Variabilele care aparțin unei structuri se numesc câmpuri ale structurii. Un exemplu:
struct Masina {
char marca[100];
char model[50];
unsigned short anFabricatie;
char numarInmatriculare[8];
char culoare[10];
};
Câmpurile structurii Masina sunt: marca, model, anFabricatie, numarInmatriculare și culoare.
Atenție: Definiția unei structuri nu implică automat și existența unei variabile de tipul respectiv, așa cum definirea tipului de dateint
nu implică existența unei varibile de tipint
.
Declararea unei variabile de tipul Masina se face exact ca declararea oricărei alte varibile, sub forma: <tip_data> <nume_variabila>, cu observația că tipul de dată va conține și cuvântul cheie struct
, deci acesta va fi struct Masina
:
struct Masina {
char marca[100];
char model[50];
unsigned short anFabricatie;
char numarInmatriculare[8];
char culoare[10];
};
int main() {
struct Masina masina;
return 0;
}
Odată definită o variabilă de tip struct
, operatorul folosit pentru a accesa câmpurile structurii este .
:
#include <stdio.h>
struct Masina {
char marca[100];
char model[50];
unsigned short anFabricatie;
char numarInmatriculare[8];
char culoare[10];
};
int main() {
struct Masina masina;
printf("Care este marca masinii? ");
fgets(masina.marca, 100, stdin);
printf("Care este modelul masinii? ");
fgets(masina.model, 50, stdin);
printf("Care este numarul de inmatriculare al masinii? ");
fgets(masina.numarInmatriculare, 8, stdin);
printf("Care este culoarea masinii? ");
fgets(masina.culoare, 10, stdin);
printf("Care este anul de fabricatie a masinii? ");
scanf("%hu", &masina.anFabricatie);
return 0;
}
Atenție: O structură poate avea câmpuri de orice tip, inclusiv de tipul altor structuri.