Extras din curs
STRUCTURI, UNIUNI, ENUMERARE
Structura grupeaza mai multe variabile de tipuri diferite sub aceleasi nume, notiunea se regaseste si sub numele de agregat, conglomerat. Câmpul de biti permite un acces usor la biti. Uniunea permite ca aceleasi zone de memorie sa fie definite ca doua sau mai multe tipuri de variabile.Enumerarea este o lista de constante întregi cu nume.
Structuri
Structurea este un grup de variabile de tipuri diferite reunite sub acelasi nume, ce pune la dispozitia utilizatorului un mod convenabil de pastrare a informatiilor legate între ele.
Declararea unei structuri creaza un nou tip de date ce poate fi folosit pentru a crea variabile de acel tip sau pentru a crea direct variabile de acel tip. Variabilele care fac parte din structura se numesc membri, elementele sau câmpurile structurii. Între membri structurii deobicei exista o legatura logica.
Spre deosebire de tablouri, fiecare element al unei structuri poate avea propriul sau tip care poate diferi de tipul oricarui alt element.
Forma generala a declararii unei structuri este:
struct nume – generic {
tip nume – membrul 1;
tip nume – membrul 2;
tip nume – membrul;
} lista_variabile;
unde:
- struct - este cuvânt rezervat, numele tipului de date;
- tip – este orice tip de data admis de C; nu trebuie sa fie acelasi pentru toate campurile;
- nume–generic – tipul dat structurii, optional;
- lista_variabile -este o lista de variabile de tip nume_generic daca apare sau anonim daca nu apare, este optionala;
- nume_membru i – este numele campului (membrului) i al structurii.
Nume_generic si lista_variabile sunt optionale, dar cel putin una apare. Daca nume_generic apare înseamna ca s-a creat un nou tip de date,. Daca lista_variabile apare inseamna ca s-au declarat variabile de tip structura, fara ca structura sa aibe tip( tipul structurii create este anonim).
Exemplu:
struct carte {
char nume_carte [30];
char nume_autor [40];
char editura [20];
long data_ap;
unsigned char ed;
} carte1, carte2;
Carte este tipul structurii, variabilele de tip structura sunt carte1 si carte2. Odata definit un tip de structura, se pot crea mai multe variabile de acel tip, folosind forma generala:
struct nume_generic lista_variabile;
Declaratia de mai sus se poate rescrie astfel:
struct carte {
char nume_carte [30];
char nume_autor [40];
char editura [20];
long data_ap;
unsigned char ed; //editia
} ;
struct carte carte 1, carte 2;
Deci nu este necesar sa se declare toate variabilele de tipul respectiv atunci cand este definita o structura. Variabilele se pot declara separat, pe masura ce apare necesitatea folosirii lor.
În cazul în care se stie exact variabilele de tip structura folosite în program, nume_generic poate lipsi. De exemplu daca programul va folosi doar variabilele carte1, carte2 si carte3 în cadrul programului putem declara structura astfel:
struct {
char nume_carte [30];
char nume_autor [40];
char editura [20];
long data_ap;
unsigned char ed;
float pret;
} carte1, carte2, carte3;
unde lipseste numele tipului structurii create.
Accesul la membrii structurii
Pentru a accesa un camp al unei structuri, trebuie specificate atat numele variabilelor de tip structura cat si numele campului, separate printr-un punct. Forma generala de acces la un membru:
Nume_variabila . nume_membru
Pentru structura si variabilele declarate mai sus putem realiza urmatoarele operatii:
- atribuirii de forma:
carte1 . data_ap = 1999;
carte2 . editura = “Teora”;
carte1 . nume_carte = “Programare în C”;
carte1 . pret = 12345.50;
- citirea unor campuri ale unei structuri :
scanf (“% ld %f %s “,&carte1.data_ap, &carte1.pret, carte1.editura);
gets (carte1.nume_carte);
- scrierea / afisarea unor campuri ale unei structurii:
printf (“ %ld %f %s “, carte1.data_ap, carte1.pret, carte1.editura);
- afisarea un caracter dintr-un camp:
printf (“ %c “, carte1.nume_autor [5]);
- atribuirea unei variabile a unui caracter dintr-un camp:
ch= carte1.nume_autor [5]);
- continutul unei variabile de tip structura poate fi asignat unei alte variabile de tip structura, dar de acelasi tip:
carte2 = carte1;
Preview document
Conținut arhivă zip
- Structuri, Uniuni, Enumerare.doc