Struktura (programovací jazyk C)

From Wikipedia, the free encyclopedia

Remove ads

Struktura (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.

Související informace naleznete také v článku Záznam (informatika).

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.), 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í.[1]

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é.

Remove ads

V jiných jazycích

Stejně jako jeho C protějšek, datový typ struct v C# (Strukture v jazyce Visual Basic .NET) 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).[2]

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é. (Třídy definované pomocí klíčového slova class, má členy a základní třídy ve výchozím nastavení soukromé.)

Remove ads

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.account_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. datových členů), plus režie závislá na konkrétním systému.

Remove ads

Odkazy

Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.

Remove ads