Složený datový typ - Composite data type
![]() | tento článek potřebuje další citace pro ověření.Květen 2016) (Zjistěte, jak a kdy odstranit tuto zprávu šablony) ( |
v počítačová věda, a složený datový typ nebo složený datový typ je jakýkoli datový typ které mohou být vytvořeny v programu pomocí programovací jazyk je primitivní datové typy a další složené typy. Někdy se tomu říká a struktura nebo agregovaný datový typ,[1] ačkoli druhý termín může také odkazovat pole, seznamy Akt konstrukce kompozitního typu je znám jako složení. Složené datové typy jsou často kontrastovány se skalárními proměnné.
C / C ++ struktury a třídy
A struktur
je C a C ++ Pojem složeného typu, datový typ, který tvoří pevnou sadu označených pole nebo členů. Říká se tomu kvůli struktur
klíčové slovo použité při jejich deklaraci, což je zkratka pro struktura nebo přesněji uživatelsky definovaná datová struktura.[Citace je zapotřebí ]
V C ++ je jediný rozdíl mezi a struktur
a a třída je výchozí úroveň přístupu, který je soukromé pro třídy a veřejnost pro struktur
s.
Všimněte si, že zatímco třídy a třída
klíčové slovo byly v C ++ zcela nové, Programovací jazyk C. již měl hrubý typ struktur
s. C ++ pro všechny záměry a účely struktur
s tvoří a nadmnožina C. struktur
s: prakticky všechny platné C struktur
s jsou platné C ++ struktur
se stejnou sémantikou.
Prohlášení
A struktur
deklarace se skládá ze seznamu polí, z nichž každé může mít libovolný typ. Celková potřeba úložiště pro a struktur
object je součet požadavků na úložiště všech polí plus všech interních polstrování.
Například:
struktur Účet { int číslo účtu; char *jméno; char *příjmení; plovák Zůstatek;};
definuje typ, doporučeno jako strukturovaný účet
. K vytvoření nové proměnné tohoto typu můžeme psát strukturovaný účet myAccount;
který má celočíselnou složku, k níž přistupuje myAccount.account_number
a komponenta s plovoucí desetinnou čárkou, k níž přistupuje myAccount.balance
, stejně jako jméno
a příjmení
komponenty. Struktura můj účet
obsahuje všechny čtyři hodnoty a všechna čtyři pole lze měnit nezávisle.
Od psaní strukturovaný účet
opakovaně v kódu se stává těžkopádným, není neobvyklé vidět a typedef
příkaz v kódu C, který poskytuje pohodlnější synonymum pro struktur
.
Například:
typedef struktur Účet_ { int číslo účtu; char *jméno; char *příjmení; plovák Zůstatek;} Účet;
V kódu C ++ je typedef
není potřeba, protože typy definované pomocí struktur
jsou již součástí běžného jmenného prostoru, takže na typ lze odkazovat jako na jeden strukturovaný účet
nebo jednoduše Účet
.
Jako další příklad lze vytvořit trojrozměrný kompozitní typ Vector, který používá datový typ s plovoucí desetinnou čárkou, pomocí:
struktur Vektor { plovák X; plovák y; plovák z;};
Proměnná s názvem rychlost
s Vektor
složený typ by byl deklarován jako Vektorová rychlost;
Členové rychlost
by bylo přístupné pomocí tečkové notace. Například, velocity.x = 5;
nastaví X
součást rychlost
rovná se 5.
Podobně lze barevnou strukturu vytvořit pomocí:
struktur Barva { nepodepsaný int Červené; nepodepsaný int zelená; nepodepsaný int modrý;};
Ve 3D grafice musíte obvykle sledovat polohu i barvu každého vrcholu. Jedním ze způsobů, jak toho dosáhnout, je vytvořit a Vrchol
složený typ, pomocí dříve vytvořeného Vektor
a Barva
kompozitní typy:
struktur Vrchol { Vektor pozice; Barva barva;};
Instance
Vytvořte proměnnou typu Struct Vertex
ve stejném formátu jako dříve: Vertex v;
Členský přístup
Přiřaďte hodnoty komponentám proti
jako tak:
proti.pozice.X = 0.0;proti.pozice.y = 1.5;proti.pozice.z = 0.0;proti.barva.Červené = 128;proti.barva.zelená = 0;proti.barva.modrý = 255;
Primitivní podtyp
Primární použití struktur
je pro konstrukci komplexních datových typů, ale někdy se používá k vytvoření primitivního strukturální podtypování. Například od Standard C.[Citace je zapotřebí ] vyžaduje, že pokud mají dvě struktury stejná počáteční pole, budou tato pole reprezentována stejným způsobem, kód
struktur ifoo_old_stub { dlouho X, y;};struktur ifoo_version_42 { dlouho X, y, z; char *název; dlouho A, b, C;};prázdnota operuj_na_ifoo(struktur ifoo_old_stub *);struktur ifoo_version_42 s;. . .operuj_na_ifoo(&s);
bude fungovat správně.
Typový podpis
Zadejte podpisy (nebo Typy funkcí ) jsou konstruovány z primitivních a složených typů a mohou sloužit jako typy samotné při konstrukci složených typů:
typedef struktur { int X; int y;} Směřovat;typedef dvojnásobek (*Metrický) (Směřovat p1, Směřovat p2);typedef struktur { Směřovat centrum; dvojnásobek poloměr; Metrický metrický;} Kruh;
Viz také
Reference
- ^ Howe, Denisi. „Bezplatný online slovník výpočetní techniky“. Dictionary.com. Citováno 1. února 2016.