Skiry Posted February 24, 2014 Report Posted February 24, 2014 Imi poate explica cineva,scurt si la obiect ce este structul si ce face ?am cautat pe google dar nu am inteles mare lucru , si nici de la profa Quote
Nytro Posted February 24, 2014 Report Posted February 24, 2014 Banuiesc ca te referi la "struct"-ul din C/C++.E simplu, sa luam un exemplu:1. Un int, de obicei, se memoreaza pe 4 octeti2. Un char se memoreaza intotdeauna pe 1 octet3. Un float, de obicei, are 4 bytesAstfel, putem crea o structura compusa din mai multe campuri:struct Om // Sau typedef struct Om{ int varsta; float inaltime;};O structura are avantajul de a grupa niste date care definesc un "obiect" (In C++ o structura chiar defineste un obiect, la fel ca si cuvantul "class"). In C doar se grupeaza niste date, in C++ insa "struct" este identif cu "class" cu exceptia faptului ca implicit in struct datele sunt "public" iar in class sunt "private". Nu te stresa cu aceste aspecte, le vei invata pe parcurs cand vei invata C++. Pentru inceput e de ajuns sa intelegi ca asa se pot grupa niste date.Astfel poti defini un obiect de tipul "Om", la fel cum definesti un "int".Om variabila_de_tipul_Om; // Sau 'struct Om variabila_de_tipul_Om;' int variabila_de_tipul_int; // Variabila simplaCu variabila de tipul "Om" poti accesa datele astfel:variabila_de_tipul_Om.varsta = 12;variabila_de_tipul_Om.inaltime = 1.80;Si cam asta e tot. Daca datele sunt alocate dinamic, se schimba putin lucrurile:Om *variabila_de_tipul_Om_C = (Om *)malloc(sizeof(Om)); // Aloci, in C, spatiu pentru o structura de tipul OmOm *variabila_de_tipul_Om_CPP = new Om; // Aloci si apelezi contructorul (nu te intereseaza asta deocamdata) in C++Iar pentru accesarea datelor:variabila_de_tipul_Om->varsta = 12;variabila_de_tipul_Om->inaltime = 1.80;Un lucru de care trebuie sa tii cont cand folosesti structuri e dimensiunea structurii:struct Test{ int x; // 4 bytes char y, z; // 2 bytes, cate unul fiecare}Desi in mod normal structura ar avea 6 bytes, de cele mai multe ori compilatorul "aliniaza memoria" la multipli de 4 octeti. Astfel este posibil ca dimensiunea structurii sa fie de fapt 8 octeti. De aceea e bine sa folosesti intotdeauna operatorul "sizeof" pentru a determina dimensiunea oricarui tip de date. 1 Quote
Skiry Posted February 24, 2014 Author Report Posted February 24, 2014 Multumesc mult! Acum am inteles ! Quote