Search
Deklarace je zápis, kterým se v jazyce C zavádí identifikátor (jméno) a datový typ proměnných, konstant a funkcí. Překladač je tak informován o existenci těchto objektů a jejich případných paměťových nárocích (viz. alokace), u funkcí také o počtu argumentů, datovém typu argumentů a datovém typu návratové hodnoty. Deklaraci je třeba provést před tím, než je objekt poprvé použit.
// priklad deklarace promenne int a; // priklad deklarace funkce void funkce(int a);
Inicializace proměnné je proces, při kterém je do operační paměti uložena hodnota v podobě binárního čísla, jehož význam je určen datovým typem proměnné. Bez inicializace je hodnota proměnné obecně náhodná, odpovídající stavu paměti po zapnutí počítače. Výjimkou jsou globální proměnné, které jsou automaticky inicializovány na 0 (pokud není programem stanoveno jinak).
0
// inicializace promenne spojena s deklaraci int a = 10;
Alokace paměti je proces, při kterém kompilátor přidělí programu pamět podle požadavků daných deklarací. Paměť je přidělena podle datového typu příslušných objektů, u polí odpovídá alokace násobku velikosti datového typu, u struktur součtu velikosti jednotlivých členských proměnných a u unionu je velikos dána velikostí největšího použitého datového typu.
Kompilátor alokuje prostor pro objekty v různých částech operační paměti (operační paměť).
Operační paměť, kterou mají naše programy k dispozici, lze z pohledu alokace paměti programátorem zjednodušeně rozdělit do několika částí:
static
Složený datový typ, který dává programátorovi k dispozici lineárně uspořádanou posloupnost prvků stejného datového typu, přístupných pomocí indexu (čísla). Index udává vzdálenost prvku od počátku pole, první prvek má tedy index 0. V jazyce C je nelze velikost pole měnit, od standardu C99 je možné stanovit velikost pole za běhu.
C99
// deklarace pole deseti prvků datového typu int // pole není inicializováno - hodnoty prvků jsou náhodné int pole1[10]; // defininice pole tří prvků datového typu int // definice je provedena výčtem všech prvků, velikost pole je stanovena kompilátorem int pole2[] = {10, 20, 30}; // výčet prvků může být i částečný, prvky, které nejsou součástí výčtu, jsou inicializovány na 0 // pokud není uvedena celková velikost, kompilátor určí velikost podle nejvyššího uvedeného indexu // následující pole má deset prvků datového typu int int pole3[] = {[3]=4, [9]=10}; // částečný výčet lze kombinovat i s uvedením velikosti pole int pole[10] = {[0]=1, [4]=1};