Struktur (C-språk)

Den aktuella versionen av sidan har ännu inte granskats av erfarna bidragsgivare och kan skilja sig väsentligt från versionen som granskades den 2 april 2021; kontroller kräver 3 redigeringar .

I C- språket är en struktur ( struct) en sammansatt datatyp som kapslar in utan att dölja en uppsättning värden av olika typer. Ordningen i vilken värden placeras i minnet specificeras när typen definieras och behålls under hela livslängden för objekt, vilket tillåter indirekt åtkomst (till exempel genom pekare ).

Exempel på strukturdeklaration:

struct str_name { int medlem_1 ; float member_2 ; char member_3 [ 256 ]; /* ... */ }; // strukturdeklaration struct str_name struct0 ; // deklaration och initiering av strukturen struct str_name struct1 = { 1 , 3.1415f , "doit" /* ... */ }; // struct-deklaration och fältinitiering // stöds av standarden eftersom C99 struct str_name struct2 = {. medlem_1 = 2 , . medlem_2 = 3.1415f , . member_3 = "doit" /* ... */ };

Typen "struktur" i C tillåter rekursion , det vill säga närvaron i dess sammansättning av pekare som hänvisar till objekt med just denna struktur. Således kombinerar strukturer i C funktionaliteten hos inte bara tupler och poster utan även algebraiska typer . För enkel presentation sägs en struct vara en klass vars standardfält alla är offentliga [1] .

I C++ utökades begreppet struktur till klass , det vill säga möjligheten att inkludera metodfunktioner i strukturen lades till . Den största skillnaden är att enligt "regeln om tre" har strukturer alltid en konstruktor , även om den inte är explicit definierad i källkoden. Att tala om " structs in C++ " är alltså inte korrekt. Detsamma gäller C# .

Go - språket använder strukturer som är nära klasser i funktionalitet (metoder kan kopplas till strukturen), även om vissa OOP- principer saknas (till exempel arv )

Anteckningar

  1. struct (C++) . C++ Språkreferens . msdn.microsoft.com. Hämtad 16 november 2017. Arkiverad från originalet 16 november 2017.