O structura este o colecție de valori eterogene, stocate intr-o zona compacta de memorie. Componentele unei structuri, denumite câmpuri, sunt identificate prin nume simbolice, denumite selectori. Câmpurile unei structuri pot fi de orice tip, simplu sau derivat, dar nu void sau funcție.
Declararea structurilor:
Declararea structurilor se face folosind cuvântul cheie struct:
struct nume_structura{
lista_câmpuri //declarații de forma tip_campi nume_campi;
}lista_declaratori; //variabile de tip structura
nume_structura sau lista_declaratori pot lipsi, dar nu simultan. Daca se precizează nume_structura, atunci înseamnă ca se face definirea tipului struct nume_structura, care poate fi apoi folosit pentru declararea de variabile, ca tip de parametri formali sau ca tip de rezultat returnat de funcții:
struct coordonate{//se declara tipul struct coordonate
float x,y;
}punct,*ppunct,puncte[20]; //variabile
struct coordonate alt_punct={1,4.5},
alte_puncte[10]={{2,4},{8},{9,7}},
mai_multe_puncte[25]={1,2,3,4};
//variabilele de tip structura se pot inițializa lase pot inițializa la declarare;
//câmpurile neprecizate sunt implicit 0
struct persoana{ //se declara tipul struct persoana
char nume[20];
int varsta;
}; //lipsește lista_declaratori
struct persoana pers={"Ion Ionescu",21}, *ppers,
persoane[12];
struct{ //lipsește nume_struct
char titlu[20],autor[15],editura[12];
int an_aparitie;
}carte,biblioteca[1000]; //nu se declara un tip, deci
//doar aici pot fi făcute declarațiile de variabile
Un câmp al unei structuri poate fi de tip structura, dar nu aceeași cu cea definita - se poate însa sa se declare un câmp pointer la structura definita ( aspect care va fi utilizat la implementarea listelor ):
struct persoana{ //se declara tipul struct persoana
char nume[20];
struct{
int zi,an,luna
}data_nasterii; //câmp de tip structura
}p;
struct nod_lista{
tip_info info;
struct nod_lista * urm;//câmp pointer la structura
//definita
};
Numele de structuri se afla intr-un spațiu de nume diferit de cel al numelor de variabile - se pot declara deci variabile si tipuri structura cu același nume - de evitat însa. Se pot declara tipuri structuri care au nume de câmpuri identice.
Observație:
Folosind cuvântul cheie typedef se pot defini tipuri utilizator echivalente pentru cele structura.
Declararea structurilor:
Declararea structurilor se face folosind cuvântul cheie struct:
struct nume_structura{
lista_câmpuri //declarații de forma tip_campi nume_campi;
}lista_declaratori; //variabile de tip structura
nume_structura sau lista_declaratori pot lipsi, dar nu simultan. Daca se precizează nume_structura, atunci înseamnă ca se face definirea tipului struct nume_structura, care poate fi apoi folosit pentru declararea de variabile, ca tip de parametri formali sau ca tip de rezultat returnat de funcții:
struct coordonate{//se declara tipul struct coordonate
float x,y;
}punct,*ppunct,puncte[20]; //variabile
struct coordonate alt_punct={1,4.5},
alte_puncte[10]={{2,4},{8},{9,7}},
mai_multe_puncte[25]={1,2,3,4};
//variabilele de tip structura se pot inițializa lase pot inițializa la declarare;
//câmpurile neprecizate sunt implicit 0
struct persoana{ //se declara tipul struct persoana
char nume[20];
int varsta;
}; //lipsește lista_declaratori
struct persoana pers={"Ion Ionescu",21}, *ppers,
persoane[12];
struct{ //lipsește nume_struct
char titlu[20],autor[15],editura[12];
int an_aparitie;
}carte,biblioteca[1000]; //nu se declara un tip, deci
//doar aici pot fi făcute declarațiile de variabile
Un câmp al unei structuri poate fi de tip structura, dar nu aceeași cu cea definita - se poate însa sa se declare un câmp pointer la structura definita ( aspect care va fi utilizat la implementarea listelor ):
struct persoana{ //se declara tipul struct persoana
char nume[20];
struct{
int zi,an,luna
}data_nasterii; //câmp de tip structura
}p;
struct nod_lista{
tip_info info;
struct nod_lista * urm;//câmp pointer la structura
//definita
};
Numele de structuri se afla intr-un spațiu de nume diferit de cel al numelor de variabile - se pot declara deci variabile si tipuri structura cu același nume - de evitat însa. Se pot declara tipuri structuri care au nume de câmpuri identice.
Observație:
Folosind cuvântul cheie typedef se pot defini tipuri utilizator echivalente pentru cele structura.