Referenční typy - pole
3. Jednorozměrné pole
Prvním typem deklarace pole s prázdnými hranatými závorkami definujeme jednorozměrné pole, označované také jako vektor (přestavme si jej jako prvky uspořádané za sebou).
Ilustrativní příklad PoleLidiDeklarace
Program PoleLidiDeklarace- Popis: Deklarace jednorozměrného pole, velikost pole, instance pole
- Zadání: Deklarujte jednorozměrné pole s názvem poctyLidi, které bude obsahovat počty lidí v jednotlivých úsecích podniku. V podniku je 5 úseků.
- Řešení: Bude postupně probráno v následujícím textu
Následující kód představuje příklad deklarace
jednorozměrného pole s celočíselnými prvky. Do těchto prvků budeme ukládat počet lidí v jednotlivých úsecích podniku, proto jej nazveme poctyLidi. Názvy polí je vhodné je
pojmenovat množným číslem.
//Deklarace jednorozměrného pole int[] poctyLidi;
Kód 1: Příklad deklarace jednorozměrného pole
K vytvoření instance pole se užívá klíčové slovo new. Tento operátor vrátí odkaz na nově vytvořené pole. Za operátorem new
se uvádí datový typ prvků. Za datovým typem se uvádí v hranatých závorkách
počet prvků pole – viz Kód 2. Zkusme si vytvořit pole o 5 celočíselných prvcích, kde každý
prvek bude obsahovat počet lidí v jednotlivých úsecích podniku.
//Vytvoření instance pole o 5 prvcích poctyLidi = new int[5];
Kód 2: Deklarace jednorozměrného pole poctyLidi o 5 celočíselných prvcích
Následující obrázek reprezentuje rozdíl mezi uložením v paměti u proměnné datového typu int a datového typu pole o pěti prvcích - viz Obrázek 1. Proměnná x datového typu int je alokována standardně v zásobníku, zatímco proměnná poctyLidi datového typu pole (v našem případě jednorozměrné pole) odkazuje na souvislý blok paměti, ve které jsou na haldě uloženy prvky pole. Pole je referenčního typu (bez ohledu na datový typ jeho prvků). Hodnoty prvků pole jsou automaticky inicializovány v závislosti na jejich datovém typu (u datového typu int je to 0).

Obrázek 1: Deklarace a inicializace proměnné datového typu int a deklarace a vytvoření instance pole
Paměť pro instanci pole je přidělována dynamicky, velikost pole nemusí být konstanta, ale lze ji měnit za běhu programu (anglicky „Runtime“) – viz Kód 3.
//Výpis pro uživatele Console.Write("Zadejte velikost pole: "); //Načtení velikosti pole int velikostPole = int.Parse(Console.ReadLine()); //Vytvoření instance pole o načtené velikosti int[] poctyLidi = new int[velikostPole];
Kód 3: Příklad deklarace jednorozměrného pole, vytvoření instance, určení velikosti pole za běhu programu
Lze také vytvořit pole o velikosti 0 (pole o velikosti nula je stále pole o žádném prvku, takže se nejedná o nulovatelný datový typ – null).