Structură (limbaj C)

Versiunea actuală a paginii nu a fost încă examinată de colaboratori experimentați și poate diferi semnificativ de versiunea revizuită pe 2 aprilie 2021; verificările necesită 3 modificări .

În limbajul C , o structură ( struct) este un tip de date compus care încapsulează fără a ascunde un set de valori de diferite tipuri. Ordinea în care valorile sunt plasate în memorie este specificată la definirea tipului și este reținută pe toată durata de viață a obiectelor, ceea ce permite accesul indirect (de exemplu, prin pointeri ).

Exemplu de declarare a structurii:

struct str_name { int membru_1 ; float member_2 ; char member_3 [ 256 ]; /* ... */ }; // declarația structurii struct nume_str struct0 ; // declararea și inițializarea structurii struct str_name struct1 = { 1 , 3.1415f , "doit" /* ... */ }; // declarația structului și inițializarea câmpului // suportate de standard începând cu C99 struct str_name struct2 = {. membru_1 = 2 , . membru_2 = 3,1415f , . member_3 = "doit" /* ... */ };

Tipul „structură” în C permite recursiunea , adică prezența în compoziția sa a indicatorilor care se referă la obiecte chiar din această structură. Astfel, structurile din C combină funcționalitatea nu numai a tuplurilor și a înregistrărilor , ci și a tipurilor algebrice . Pentru o prezentare ușoară, se spune că o structură este o clasă ale cărei câmpuri implicite sunt toate publice [1] .

În C++ , conceptul de structură a fost extins la clasă , adică s-a adăugat posibilitatea includerii funcțiilor de metodă în structură . Principala diferență este că, conform „regula de trei”, structurile au întotdeauna un constructor , chiar dacă acesta nu este definit în mod explicit în codul sursă. Astfel, a vorbi despre „ structuri în C++ ” nu este corect. Același lucru este valabil și pentru C# .

Limbajul Go folosește structuri care sunt apropiate ca funcționalitate de clase (metodele pot fi atașate structurii), deși lipsesc unele principii OOP (de exemplu, moștenirea )

Note

  1. struct (C++) . Referință pentru limbajul C++ . msdn.microsoft.com. Consultat la 16 noiembrie 2017. Arhivat din original pe 16 noiembrie 2017.