- Typový systém jazyka C zahrnuje primitivní datové typy, odvozené typy, složené typy a ukazatele.
 
Primitivní datové typy
- Integer (celá čísla):
int (4B): Standardní celočíselný typ.short int (2B): Krátký celočíselný typ.long int (4B): Dlouhý celočíselný typ.unsigned int (4B): Bez znaménka.
 - Floating-point numbers (desetinná číslo):
float (4B): Jednoduchá přesnost s pohyblivou řádovou čárkou.double (8B): Dvojitá přesnost s pohyblivou řádovou čárkou.long double (12B - 32bit a 16B - 64bit): Rozšířená přesnost s pohyblivou řádovou čárkou.
 - Character (znakové typy):
char (1B): Reprezentace jednoho znaku nebo malého celého čísla.
 - Void (prázdný typ):
void: Používá se pro funkce, které nevracejí hodnotu, a pro ukazatele bez konkrétního typu.
 - Enum (Enumerace):
- enum: Umožňuje definovat typ, který může mít jednu z několika pojmenovaných hodnot.
 enum week { Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday };
 
Odvozené typy
- Array (pole):
- Pole je kolekce prvků stejného typu uložených v sousedních paměťových místech.
 
 
int arr[5] = {1, 2, 3, 4, 5};- Pointers (ukazatele):
- Ukazatele jsou proměnné, které obsahují adresu v paměti.
 - Deklarace ukazatele se provádí před typem proměnné, např. 
int *ptr;pro ukazatel na celé číslo. - Ukazatele mohou být použity k práci s dynamickou pamětí a pro předávání adres funkcím pro manipulaci s daty mimo danou funkci.
 
 
int num = 10; // Deklarace a inicializace celočíselné proměnné
int *ptr;     // Deklarace ukazatele na celočíselnou hodnotu
 
ptr = #   // Nastavení ukazatel tak, aby ukazoval na adresu proměnné num
 
// Změna hodnoty proměnné num pomocí ukazatele
*ptr = 20; //Pomocí operátoru dereference měníme hodnotu a né adresu
 
printf("Hodnota na adrese, kam ukazuje ptr: %d\n", *ptr);- Strings (řetězce):
- V C jsou řetězce implementovány jako pole znaků zakončené nulovým znakem 
\0. 
 - V C jsou řetězce implementovány jako pole znaků zakončené nulovým znakem 
 
char str[] = "Hello, World!";- Structures (struktury):
- Struktura je uživatelem definovaný typ, který umožňuje seskupení různých typů dat pod jeden název.
 
 
struct Person {
    char name[50];
    int age;
    float salary;
};
 
struct Person p1;- Unions (uniony):
- Union je podobná struktuře, ale všechny její členy sdílejí stejnou paměťovou oblast.
 - To znamená, že v unii může být v daném okamžiku uložen pouze jeden člen, a všechny ostatní členy přepíšou stejnou oblast paměti.
 
 
union Data {
    int i;
    float f;
    char str[20];
};
 
union Data data;Složené typy
- Složené typy jsou typy, které kombinují více primitivních nebo odvozených typů
 
- Pole struktur:
 
struct Person people[5];- Pole ukazatelů:
 
int *ptrArr[5];- a další
 
Typové modifikátory:
const: Určuje, že hodnota proměnné je neměnná.const int constantValue = 10;
volatile: Indikuje, že hodnota proměnné se může změnit mimo kontrolu programu- například hardwarovým zařízením
 volatile int sensorValue;
signed/unsigned: Určuje, zda může být hodnota typu záporná (signed) nebo je vždy nezáporná (unsigned).restrict: používá se s ukazateli, aby kompilátoru sdělilo, že ukazatel je jediným referenčním ukazatelem na objekt, na který ukazuje.
Typové přetypování:
- Přetypování umožňuje změnit typ proměnné na jiný typ.
 - Například 
(int) 5.5provede přetypování desetinného čísla na celé číslo. 
Navigace
Předchozí: Večeřící filozofové Následující: Principy správy paměti v jazyce C Celý okruh: 3. Programovací jazyky a programování