O structura este o colectie de valori eterogene, stocate intr-o zona compacta de memorie. Componentele unei structuri, denumite campuri, sunt identificate prin nume simbolice, denumite selectori. Campurile unei structuri pot fi de orice tip, simplu sau derivat, dar nu void sau functie.
Declararea
structurilor:
Declararea structurilor se face folosind cuvantul
cheie struct:
| struct nume_structura{
lista_campuri //declaratii de forma tip_campi nume_campi; }lista_declaratori; //variabile de tip structura |
nume_structura
sau lista_declaratori
pot lipsi, dar nu simultan. Daca se precizeaza nume_structura,
atunci inseamna 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 functii:
Un camp al unei structuri poate fi de tip structura,
dar nu aceeasi cu cea definita - se poate insa sa se declare un camp pointer
la structura definita ( aspect care va fi utilizat la implementarea listelor
):
Numele de structuri se afla intr-un spatiu de nume diferit de cel al numelor de variabile - se pot declara deci variabile si tipuri structura cu acelasi nume - de evitat. Se pot declara tipuri structuri care au nume de campuri identice.
|
|
Selectia campurilor pentru variabila p de mai sus:
p.nume //tablou de caractere
p.nume[0] //primul caracter din nume
p.nume[strlen(p.nume)-1] //ultimul caracter din nume
p.data_nasterii.an
p.data_nasterii.luna
p.data_nasterii.an
|
variabila_pointer->nume_camp |
Cu declaratiile de mai sus:
Rezolvarea aplicatiei 3 de la lucrarea de laborator:
| #include <stdio.h>
#include <string.h> #include <ctype.h> #include <conio.h> #define LUNG 21
typedef struct{ //a
ORAS ORASE[MAX]; //c //b
ORAS CITIRE_ORAS(void){
/*void CITIRE_ORAS(ORAS *po){ //varianta a
functiei care primeste pointerul
int TIPARIRE(float p,char z){
int verif(ORAS o,float p,char z){
void main(void){ //e
|