Capitolul 6.1. Notiuni de baza

Vezi subiectul anterior Vezi subiectul urmator In jos

Capitolul 6.1. Notiuni de baza

Mesaj  zooky la data de Mier Mar 18, 2009 1:52 pm

Sa ne reamintim rutinele de conversie a datei din capitolul 5. O data consista din mai multe parti, precum ziua, luna, anul si probabil ziua din an si numele lunii. Aceste cinci variabile pot fi toate plasate intr-o singura structura ca aceasta:

struct date {
int day;
int month;
int yearday;
char mon_name[4];
}

Cuvintul cheie "struct" introduce o structura de date, care este o lista de declartii cuprinsa intre acolade. Un nume optional (eticheta) numit "structure tag", poate sa urmeze cuvintul cheie "struct"(precum date in exemplul de mai sus). Aceasta eticheta da un nume acestui gen de structura si poate fi referita in continuare ca prescurtare de declaratie detaliata.

Elementele sau variabilele mentionate intr-o structura sint numite "membri". Un membru al structurii sau o eticheta a unei structuri sau o variabila simpla pot avea acelasi nume fara ambiguitate deoarece se disting prin context. Desigur se va utiliza acelasi nume doar pentru a defini obiecte in strinsa relatie.

Acolada din dreapta care inchide lista membrilor structurii poate fi urmata de o lista de variabile ca in exemplul de mai jos:

struct {...} x, y, z;
ceea ce este sintactic analog cu:

int x, y, z;

in sensul ca fiecare declaratie numeste pe x, y, z si z ca variabile de tipul specificat si aloca spatiu pentru fiecare din ele.

O declaratie de structura care nu este urmata de o lista de variabile nu aloca spatiu de memorie ci descrie doar forma sau organizarea structurii. Daca structura este nominalizata, numele poate fi utilizat in program pentru atribuirea de valori structurii. De exemplu:

struct date d;

defineste o variabila d care are o structura de tip data, si poate fi initializata la un moment dat conform definitiei sale cu o lista ca mai jos:

struct date d ={4, 7, 1776, 186, "Jul" };

Un membru a unei structuri particulare poate fi referit intr-o expresie printr-o constructie de forma:

"numestructura.membru"

Operatorul "." din constructia de mai jos leaga numele membrului de numele structurii. De exemplu pentru a afla un an bisect din structura d se refera la membrul "year" astfel:

leap = d.year % 4 == 0 && d.year % 100 != 0 || d.year % 400 == 0;

sau pentru a testa numele liniei din membrul "mon"

if (strcmp(d.mon_name, "Aug") == 0) ...

sau pentru a converti numele lunii la litere mici

d.mon_name[0] = lower(d.mon_name[0]);

O structura poate sa cuprinda structuri, de exemplu:

struct person {
char name[NAMESIZE];
char address[ADRSIZE];
long zipcode;
long ss-number;
double salary;
struct date birthdate;
struct date hiredate;
};

Structura "person" contine doua structuri de tip data ("birthdate" si "hiredate"). Daca declaram "p" astfel

struct person emp;

atunci o constructie
emp.birthdate.month

se va referi la luna din data nasterii. Operatorul "." asociaza partea stinga cu dreapta.
avatar
zooky
Moderator
Moderator

Numarul mesajelor : 147
Data de inscriere : 15/03/2009
Varsta : 24
Localizare : Cernatesti City

Vezi profilul utilizatorului http://e-learning.forumhit.ro

Sus In jos

Vezi subiectul anterior Vezi subiectul urmator Sus


 
Permisiunile acestui forum:
Nu puteti raspunde la subiectele acestui forum