2. Hodnotové typy

Na následujícím obrázku vidíme základní členění jednoduchých datových typů - viz Obrázek 1.

Rozdělení jednoduchých datových typů

Obrázek 1: Rozdělení jednoduchých datových typů

Měli bychom zmínit, že hodnotové datové a referenční typy jsou ukládány v paměti rozdílně. Zatímco hodnotové typy jsou ukládány do tzv. zásobníku (anglicky „Stack“, kde postup ukládání je takový, že prvek tohoto datového typu, který se uložil do zásobníku jako poslední, je ze zásobníku vyjmut jako první – metoda LIFO – zkratka anglického „Last In First Out“). Výhoda tohoto typu je v jejím rychlém přidělení paměti oproti referenčním typů.

Většina hodnotových typů např. int, float, double a char (nikoliv string) mají svoji pevnou velikost bloku v paměti odpovídající jejímu datovému typu. Když deklarujeme proměnnou hodnotového typu, kompilátor vygeneruje kód, který přidělí blok paměti, který jak tak velký, aby se do něj vešel rozsah odpovídajícího datové typu (např. datový typ int vytýčí 4 Byte paměti). Proměnná pocet a text byly na obrázku v předchozí kapitole zobrazeny pouze schematicky (viz https://phix.zcu.cz/moodle/pluginfile.php/389329/mod_book/chapter/99047/Hodnotovy_referencni_typ.png?time=1580463909144). Ve skutečnosti je proměnná pocet datového typu int, který zabírá v paměti vždy 4 Byte. Na následujícím obrázku je detailně zobrazen pouze informace na 1 Byte, ostatní předchozí bity obsahují nuly – viz Obrázek 2. Pokud si spočteme hodnotu v desítkové soustavě, tj. přepočet binárního kódu do desítkové soustavy vychází hodnota 8, tj. 8 =1*23.

Uložení proměnné hodnotového typu v zásobníku

Obrázek 2: Uložení proměnné hodnotového typu v zásobníku