![]()
Proměnnou typu pole je výhodné použít v případě, že potřebujete manipulovat se skupinou souvisejících objektů. Zjednodušeně se dá uvést, že pole Vám umožní uložit a přistupovat k množině objektů stejného typu v rámci jedné proměnné. Na proměnnou typu pole je možné v ARX pohlížet jako na objekt, který ukazuje na množinu dalších objektů.
datový_typ_prvků_pole jméno_pole[počet];
| datový_typ_prvků_pole | |||
| Povinný. Stanový datový typ prvků pole. Zároveň určuje i velikost potřebné paměti. | |||
| jméno_pole | |||
| Povinné. Identifikátor proměnné typu pole. | |||
| počet | |||
|
Povinný. Určení počtu položek v poli. |
|||
![]()
Deklarace vícerozměrného pole je obdobné jako deklarace jednorozměrného pole. Deklarace vícerozměrného pole se liší pouze v přidání dvojice hranatých závorek pro každý další rozměr:
datový_typ_prvků_pole jméno_pole[počet1][počet2]...[početn];
| datový_typ_prvků_pole | |||
| Povinný. Stanový datový typ prvků pole. Zároveň určuje i velikost potřebné paměti. | |||
| jméno_pole | |||
| Povinné. Identifikátor proměnné typu pole. | |||
| počet1, počet2 .. početn | |||
|
Povinný. Určení počtu položek v daném rozměru pole. |
|||
![]()
Počet prvků pole musí být zadán konstantním kladným výrazem. V některých speciálních případech je možné vynechat při deklaraci údaj o počtu prvků pole:
Jazyk C++ zakazuje použití následujících typů pro prvky pole:
![]()
V programovacím jazyku C++ je možné využít možnosti inicializace pole při definici. V tomto případě uvedeme za identifikátorem pole rovnítko a ve složených závorkách zadáme jednotlivé hodnoty prvků. Při inicializaci není nutné zadávat hodnoty všech prvků. Prvky, které neinicializujeme se musí nacházet v souvislém bloku na konci pole.
![]()
int prvniPole[4] = {1, 3, 5, 7};
// vytvoření a inicializace pole. Hodnoty pole budou 1, 3, 5, 7
int druhePole[6] = {1, 3};
// vytvoření a inicializace pole.
// Hodnoty pole budou 1, 3, 0, 0, 0, 0
float tretiPole[] = {1.1, 2.2, 3.3, 4.4}
// vytvoření a inicializace pole o třech prvcích
int ctvrtePole[][2] = {
{0, 0},
{1, 1},
{2, 2},
};
// vytvoření a inicializace dvourozměrného pole
int patePole[3][2] = {0, 0, 1, 1, 2, 2};
// jiný způsob vytvoření a inicializace předchozího pole
![]()
Každý prvek v poli má svůj specifický index (uvádí se v hranatých závorkách za jménem proměnné pole). Indexování pole je v ARX podobné jako v C/C++. První prvek pole má index = 0, druhý prvek rovný 1 atd. Poslední prvek má index (počet_prvků_pole - 1).
int jednoduche_pole[200];
// vytvoření jednoduchého pole o 200 prvcích
const int min=10;
// deklarace konstanty
long druhe_pole[10*min];
// vytvoření pole, velikost pole udána pomocí konstanty
struct auto nove[40];
// vytvoření pole se jménem nove, o 40 prvcích typu struct auto
Příklad průchodu a vypsání všech prvků pole testPruchodu:
int testPruchodu[] = {11, 22, 33}
for (int i = 0; i < 3; i++)
{
printf(testPruchodu[i]);
}
![]()
Prvky pole jsou uloženy v paměti v nepřerušené řadě za sebou. To umožňuje jednoduchou adresaci prvků, rychlý výpočet adres prvků. Díky tomu je možné přistupovat na prvky pole pomocí ukazatelů.
Příklad získání adresy libovolného prvku pole:
&x[i] = bázová_adresa_x + i*sizeof(typ_prvků_pole);
Znak & značí v C++ adresu v paměti, bázová_adresa_x = proměnná typu pole, i index prvku pole, jehož adresu zjišťujeme a typ_prvků_pole = typ prvků pole.
![]()
Prvek pole je možné používat jako kteroukoliv jinou proměnnou. Do prvku pole je možné přiřazovat hodnotu, hodnotu z prvku pole číst atd.
Příklad přiřazení hodnoty do prvku pole testPruchodu (pole bylo deklarováno v předchozím příkladě):
testPruchodu[1] = 55;
![]()
int poleTest[] = {11, 22, 33, 44, 55, 66}
for (int i = 0; i < (sizeof((poleTest))/sizeof(poleTest[0])); i++)
{
printf("Prvek pole č. " + i
+ " má hodnotu " + poleTest[i] + ".");
}
Výstupem uvedeného úseku kódu by byl výpis:
Prvek pole č. 0 má hodnotu 11. Prvek pole č. 1 má hodnotu 22. Prvek pole č. 2 má hodnotu 33. Prvek pole č. 3 má hodnotu 44. Prvek pole č. 4 má hodnotu 55. Prvek pole č. 5 má hodnotu 66.