Szerkezet (C nyelv)

Az oldal jelenlegi verzióját még nem ellenőrizték tapasztalt közreműködők, és jelentősen eltérhet a 2021. április 2-án felülvizsgált verziótól ; az ellenőrzések 3 szerkesztést igényelnek .

A C nyelvben a struktúra ( struct) olyan összetett adattípus , amely különböző típusú értékeket nem rejt magában . Az értékek memóriában való elhelyezésének sorrendje a típus meghatározásakor kerül meghatározásra, és az objektumok teljes élettartama alatt megmarad, ami lehetővé teszi a közvetett hozzáférést (például mutatókon keresztül ).

Példa szerkezeti deklarációra:

struct str_name { int tag_1 ; float tag_2 ; char tag_3 [ 256 ]; /* ... */ }; // struktúra deklaráció struct str_name struct0 ; // a struktúra deklarálása és inicializálása struct str_name struct1 = { 1 , 3.1415f , "doit" /* ... */ }; // struct deklaráció és mező inicializálása // a szabvány támogatja a C99 óta struct str_name struct2 = {. tag_1 = 2 , . tag_2 = 3,1415f , . tag_3 = "doit" /* ... */ };

A "struktúra" típus a C-ben lehetővé teszi a rekurziót , vagyis az ilyen szerkezetű objektumokra utaló mutatók jelenlétét az összetételében. Így a C struktúrái nem csak a sorok és rekordok , hanem az algebrai típusok funkcióit is kombinálják . Az egyszerű bemutatás érdekében a struktúrát olyan osztálynak nevezzük, amelynek alapértelmezett mezői mind nyilvánosak [1] .

A C++ -ban a struktúra fogalmát kiterjesztették az osztályra , vagyis hozzáadták a metódusfüggvények szerkezetbe való beillesztésének lehetőségét . A fő különbség az, hogy a „három szabálya” szerint a struktúráknak mindig van konstruktora , még akkor is, ha az nincs kifejezetten definiálva a forráskódban. Így a „ struktúrákról C++-ban ” nem helyes beszélni . Ugyanez vonatkozik a C# -ra is .

A Go nyelv olyan struktúrákat használ, amelyek funkcionalitásukban közel állnak az osztályokhoz (metódusok csatolhatók a struktúrához), bár néhány OOP -elv hiányzik (például az öröklődés )

Jegyzetek

  1. struktúra (C++) . C++ nyelvi referencia . msdn.microsoft.com. Letöltve: 2017. november 16. Az eredetiből archiválva : 2017. november 16..