Struktura (programovací jazyk C)
Author
Albert FloresStruktura (anglicky struct) je v programovacím jazyce C, a z něj odvozených, deklarace složeného datového typu, která definuje skupinu proměnných v operační paměti, se kterými umožňuje pracovat jako s jedním celkem.
K této struktuře se potom přistupuje prostřednictvím ukazatele na její adresu, nebo odkazem. Struktura může obsahovat libovolné množství existujících, jednoduchých i složených (komplexních) datových typů, takže jde o přirozený způsob zápisu pro záznamy, jako jsou smíšené typy dat v seznamech položek adresáře čtoucí pevný disk (délka souboru, název, rozšíření, fyzické (válec, disk, index hlavy) adresa, atd. +more), nebo jiný smíšený typ záznamu (jméno pacienta, adresa, telefon, číslo pojištění, váha atd. ).
Protože obsah struktury je uložený v souvislé paměti, musí být použit operátor sizeof, aby se zjistil počet bajtů potřebných pro uložení struktury určitého typu, stejně jako může být použit pro základní typy. Zarovnání jednotlivých oblastí v struktuře (s ohledem na zarovnání na délku slova počítače) je specifické pro implementaci a mohou zahrnovat různá zarovnání, i když moderní kompilátory obvykle podporují #pragma pack direktivu, která upravuje velikost v bajtech použitých pro zarovnání.
V programovacím jazyce C++ je struktura příbuzná s třídou, ale existuje rozdíl ve výchozí viditelnosti: členy třídy jsou implicitně soukromé, kdežto členy struktury jsou ve výchozím nastavení veřejné.
V jiných jazycích
Stejně jako jeho C protějšek, datový typ struct v C# (Strukture v jazyce Visual Basic . +moreNET) je podobný třídě. Největší rozdíl mezi struct a class v těchto jazycích je, že když je struct předán jako argument funkce, změny struktury v této funkci se neprojeví v původní proměnné (pokud je požadováno předání odkazem).
Tímto rysem se liší od C++, kde třídy a struktury mohou být přiděleny buď na zásobníku (podobně jako C#) nebo na haldě, s explicitním ukazatelem. V C++ jediný rozdíl mezi struct a class spočívá v tom, že členy a základní třídy struct, jsou ve výchozím nastavení veřejné. +more (Třídy definované pomocí klíčového slova class, má členy a základní třídy ve výchozím nastavení soukromé. ).
Deklarace
Obecná syntaxe deklarace struktury v C je:Kde tag_name je volitelný název v některých kontextech.
Taková deklarace struktury může také objevit v souvislosti s deklarací typedef typu alias nebo deklarace nebo definice proměnné:Často je lepší tyto subjekty deklarovat samostatně, stejně jako v:Například:definuje typ, označované jako struct account (struktura účet). Pro vytvoření nové proměnné tohoto typu, můžeme psátkterý obsahuje číslo součásti, přistupované prostřednictvím s. +moreaccount_number a desetinnou část, přistupovanou přes s. balance, stejně jako části first_name a last_name. Struktura s obsahuje všechny čtyři hodnoty a všechny čtyři pole mohou být změněny nezávisle na sobě.
Ukazatel na instanci struktury "account" bude ukazovat na adresu paměti první proměnné, tedy "account_number". Celková paměť potřebná pro uložení tohoto objektu struct odpovídá součtu požadavků na uložení všech obsažených polí (ev. +more datových členů), plus režie závislá na konkrétním systému.
Odkazy
Reference
Související články
Třída (programování) * Union (programovací jazyk C) * Složený datový typ * Flexibilní člen pole * Bitové pole