Deklarace jednorozměrného pole. Co je pole? Příklad řešení problému pomocí polí Pascal

20.12.2023 Počítače

Kromě typu souboru. Je volán typ komponenty základní typ. Každou komponentu lze explicitně identifikovat pomocí názvu proměnné pole, za kterým v hranatých závorkách následuje index. Jejich typ se nazývá typ indexu. Doba potřebná pro přístup k jakékoli komponentě je nezávislá na hodnotě indexu. O polích tedy můžeme mluvit jako o objektech, jejichž struktura to umožňuje náhodný(nebo rovný) přístup.

Deklarace proměnných typu pole

Proměnná typu pole je popsána v části definice proměnné v následujícím tvaru:

Var<идентификатор>:array[<тип индекса>] z<тип компонент>

Nejčastěji používaným typem indexu je typ intervalu. Například jednorozměrné pole průměrných měsíčních teplot bude popsáno takto:

Var T: pole skutečných;

Popis pole určuje za prvé umístění pole v paměti a za druhé pravidla pro jeho další použití v programu. Po sobě jdoucí prvky pole jsou umístěny v po sobě jdoucích paměťových buňkách (T, T atd.) a hodnoty indexu by neměly spadat mimo rozsah 1...12. Jako index lze použít jakýkoli výraz příslušného typu. Například:

T, T

Typ indexu může být jakýkoli skalární ordinální typ kromě celého čísla (v implementaci Turbo Pascal). Program může například obsahovat následující popisy:

Var Cod: pole 1..100; L: pole Char;

V takovém programu jsou povoleny následující zápisy prvků pole:

Treska["x"]; L; treska; L;

V některých případech může být vhodné použít jako index výčtový typ. Například údaje o počtu studentů ve čtyřech desátých třídách jedné školy lze uložit do následujícího pole:

Typ Index=(A, B, C, D); Var Class_10: pole bajtů;

A když třeba živel Třída_10[A] se rovná 35, to znamená, že ve třídě 10 „A“ je 35 osob. Toto indexování zlepšuje viditelnost programu.

Strukturovanému typu je často v sekci typu přidělen název, který je pak použit v sekci deklarace proměnné.

Typ Mas1 = pole celého čísla; Mas2 = pole[-10..10] znaků; var Num: Mas1; Sim: Mas2;

Vícerozměrná pole

S vícerozměrným polem v Pascalu se zachází jako s jednorozměrným polem, jehož typ prvku je také pole (pole polí). Například 10letá průměrná měsíční teplota by mohla být uložena v poli popsaném takto:

Var H: pole pole reálných;

Zde jsou příklady označení některých prvků tohoto pole:

N; N; N;

Častěji se však používá jiná, ekvivalentní forma označení prvků dvourozměrného pole:

N; N; N;

Proměnná H zastupuje celý první řádek tabulky, tzn. celé pole teplot pro rok 1981. Další možnost, ekvivalentní výše uvedenému popisu, je následující:

Typ Měsíc = pole reálných; Rok = pole měsíce; var H:Rok;

Nejkratší způsob, jak popsat toto pole, je následující:

Var H: pole skutečných;

Trojrozměrné pole lze definovat jako jednorozměrné pole, jehož prvky jsou dvourozměrná pole. Zde je příklad popisu trojrozměrného pole:

Var A: pole celého čísla;

Toto je pole skládající se z 10x20x30 = 6000 celých čísel a zabírá 6000x2 = 12000 bajtů v paměti. V Pascalu neexistuje žádný horní limit velikosti pole. Každá konkrétní implementace Pascalu však omezuje množství paměti přidělené pro pole.

Analogicky s matematikou se jednorozměrná numerická pole často nazývají vektory a dvourozměrná pole se nazývají matice. Velikost polí nelze měnit za běhu. Ke změně velikosti pole dochází změnou textu programu a rekompilací. Pro zjednodušení těchto změn je vhodné definovat parametry indexu v sekci konstanty:

Const Imax=10; Jmax = 20; var Mas: pole celého čísla;

Nyní, pro změnu velikostí pole Mas a všech programových příkazů spojených s těmito velikostmi, stačí upravit pouze jeden řádek v programu - sekci konstanty.

Operace pole

Akce na poli jako celku. Takové akce jsou přípustné pouze ve dvou případech:

  • přiřazování hodnot z jednoho pole do druhého;
  • relační operace „rovná se“ a „nerovná se“.

V obou případech musí mít pole stejné typy (typ indexu a typ prvku). Příklad:

Var P, Q: Array Of Real;

Když se provede operace přiřazení P:= Q, všechny prvky pole P se budou rovnat odpovídajícím prvkům pole Q.

Ve vícerozměrných polích může proměnná s indexem reprezentovat celé pole. Pokud například v tabulce H chcete, aby data pro rok 1989 byla stejná jako pro rok 1981 (devátý řádek je nastaven na hodnotu prvního řádku), lze to provést takto:

N:=N;

A pokud potřebujete zaměnit hodnoty těchto řádků, pak se to děje prostřednictvím třetí proměnné stejného typu:

P:= N; N:=N; N:= P;

kde P je popsáno takto:

Var P: Array Of Real;

Zpracování pole

Zpracování polí v programech probíhá komponenta po komponentě. Zde jsou příklady zadávání hodnot do polí:

Pro I:= 1 až 12 do readln(T[I]); for I:= 1 to IMax do for J:= 1 to JMax do readln(Mas);

Zde bude každá následující hodnota zapsána na nový řádek. Pro vstup řádek po řádku se používá operátor čtení. Podobně je ve smyčce pomocí indexové proměnné organizován výstup hodnot pole. Například:

Pro I:= 1 až 12 napiš(T[I]:8:4);

Následující fragment programu organizuje zobrazení matice na obrazovce řádek po řádku:

For I:= 1 to IMax do begin for J:= l to JMax do write(Mas:6); writeln; konec;

Po vytištění dalšího řádku matice přesune operátor writeln bez parametrů kurzor na začátek nového řádku. Je třeba poznamenat, že v posledním příkladu bude matice na obrazovce získána v přirozené podobě obdélníkové tabulky, pokud JMax nepřekročí 12.

Dynamická pole

Do FreePascalu a Delphi byla přidána zajímavá funkce, která popisuje pole bez specifikace rozměrů, a tedy limitů pro změnu indexů:

Var IntArray: pole integer;

Taková pole jsou dynamická a zpočátku mají nulovou délku. Nastavení velikosti pole a její určení při provádění programu se provádí stejně jako u řetězců pomocí funkcí SetLength A Délka, resp. Prvky jsou v tomto případě číslovány od nuly.

Program UsingDynamicArrays1; var A, B: Pole celých čísel; (Popis dvou proměnných - dynamická pole celočíselných prvků) begin SetLength(A, 5); (Nastavení velikosti pole A (5 prvků)) A := 1; (Přiřazení hodnoty 1 prvku pole A s číslem 0) end.

Dynamické proměnné pole jsou ukazatele a operace s nimi se provádějí jako s ukazateli. Například při přiřazování jednoho pole druhému se prvky jednoho pole nezkopírují do druhého, ale zkopíruje se adresa pole. V souladu s tím se porovnání dvou polí v logických výrazech typu „rovná se – nerovná“ provádí porovnáním adres. Příklad přiřazení jednoho pole druhému:

Program UsingDynamicArrays2; var A, B: pole celých čísel; (Popis dvou proměnných - dynamická pole celočíselných prvků) begin SetLength(A, 5); ( Nastavení velikosti pole A (5 prvků) ) A := 14; (Přiřazení hodnoty 14 nulovému prvku pole A) B:= A; (Přiřazení pole A k poli B, nyní proměnné A a B ukazují na stejné pole) B := 2; (Přiřazením nultého prvku pole B k hodnotě 2, nyní má nultý prvek pole A také hodnotu 2) end.

Všimněme si významného rozdílu v práci s řetězci a dynamickými poli, které mají stejnou vnitřní reprezentaci založenou na ukazatelích, ale různé pracovní metody. Dva různé řetězce obsahující stejnou sadu znaků jsou považovány za rovnocenné, ale dvě různá pole obsahující stejné prvky se rovnají.

Popis pole umožňuje v programu použít kterýkoli z jeho prvků. Indexované proměnné se používají k označení prvků pole v C.

Indexovaná proměnná (indexový výraz)– označení buňky pro uložení prvku pole. Označuje se jako určující identifikátor pole a index(y) prvku.

ü Pozor! Zvláštností označení prvků pole v C je číslování indexů od 0 a ne od 1. Indexy v C jsou tedy o jednu menší než matematicky zadané. Tato okolnost musí být v programu zohledněna zejména při vytváření podmínky pro opakování (opuštění) cyklu.

Schéma alokace paměti pro ukládání jednorozměrného pole je následující:

Délka buňky pro uložení každého prvku je určena typem pole:

· znak – 1 byte;

· celé číslo – 2 bajty;

· reálné – 4 bajty;

· dvojitá přesnost – 8 bajtů.

Struktura zápisu pro indexovanou proměnnou jednorozměrného pole:

jméno [index]

Kde name je identifikátor pole;

index – operand celočíselného typu, který určuje číslo prvku mezi ostatními, které tvoří pole;

– omezovače indexu.

Například v poli D(16) popsaném dříve je první prvek označen indexovým výrazem d, druhý d, aktuální d[i], předposlední d a poslední d.

V případě potřeby lze index specifikovat aritmetickým výrazem. Například d nebo d. V každém případě musí být v době použití proměnné index definován (vypočítán) a výsledná hodnota musí spadat do rozsahu určeného deskriptorem.

Uvažovaný příklad identifikace prvků pole D je aplikovatelný na kterékoli z popsaných jednorozměrných polí.

Indexované proměnné umožňují softwarovou implementaci algoritmů pomocí prvků pole. Navíc u jednorozměrného pole vám indexovaná proměnná umožňuje určit konkrétní adresu každého prvku.

Adresa libovolné proměnné je určena operací &. Proto adresa prvku d je &d, adresa d[i] je &d[i], tzn. všechny prvky pole jsou umístěny lineárně v RAM, počínaje adresou &d.

V jazyce C identifikátor jednorozměrného pole jednoznačně určuje adresu jeho prvního prvku. Například c º & c, d º & d.

Adresa každého prvku jednorozměrného pole je vyjádřena závislostí jméno+index (index určuje posun prvku vzhledem k prvnímu o počet jím určených prvků). Například &c[i] (adresa i-tého prvku pole C) se vypočítá jako c+i.

Indexový výraz tedy zcela specifikuje konkrétní místo uložení odpovídajícího prvku.

>> články

Co jsou pole v programování?

Pole je proměnná, která je kolekcí komponent stejného typu. Pro použití polí v programování budete potřebovat předběžný popis určitého typu a označení přístupu k prvkům. Prvky pole v programování jsou sjednoceny společným názvem. Pokud potřebujete získat přístup k určitému prvku pole, stačí zadat název a index. V matematice je jasný příklad pole - to jsou vektory a posloupnosti čísel, ve kterých lze skupinu čísel označit jedním jménem. Při odkazu na konkrétní číslo se používají různé indexy.

Typy polí: jednorozměrné a dvourozměrné

Pokud se pro přístup k prvkům používá jeden sériové číslo, pak se pole nazývá jednorozměrné nebo lineární. Vypadá jako stůl s jedním řádkem. Velikost pole je určena počtem indexů prvků.

Při použití dvou indexů bude pole dvourozměrné. Pokud je pole reprezentováno v nápadu tabulky, pak číslo řádku bude odpovídat prvnímu indexu a číslo sloupce nebo buňky bude odpovídat druhému.

Jak vyplnit pole?

Jedním ze způsobů, jak vyplnit pole, je operátor přiřazení. Pokud prvky souvisejí opakovaně a mají určitou závislost, je tato metoda plnění vhodná. Můžete také vyplnit homogenní pole homogenní prvky nebo hodnoty, které se získávají pomocí snímače náhodných čísel.

Jaké akce se provádějí s prvky pole?

Řazení prvků v určitém pořadí – sestupně nebo vzestupně

Hledání hodnot

Počítání počtu prvků v poli, které splňují určitou podmínku

Když jsou dvě pole ekvivalentní, je možné přiřadit jednomu poli název druhého. Všechny komponenty se zkopírují do pole, kterému je přiřazena hodnota.

Jak deklarovat pole

Chcete-li deklarovat pole a přidělit buňku v paměti k uložení prvků, musíte zadat rozměr a název. Klíčové slovo je pole. Například A 20 znamená, že jednorozměrné pole se skládá z dvaceti prvků. K 6,5 znamená, že ano dvourozměrné pole, která je prezentována jako tabulka o šesti řádcích a pěti buňkách. Pokud mluvíme o omezeních jednorozměrného pole v programování, pak je to tisíc prvků. Pro dvourozměrná pole by maximální povolená hodnota byla tabulka tisíce řádků a tisíce buněk.

Pole v programování: práce s nimi

Když je pole deklarováno, každý prvek je zpracován s názvem a indexem v hranatých závorkách. K rozlišení jednorozměrného pole od dvourozměrného pole se používají dva indexy. Prvky pole, kterým je přiřazen index, se nazývají indexované proměnné, ale lze je použít také jako jednoduché proměnné. Například být hádkou v týmu.

Typy jmen, prvky, indexy

Jak přijít na název pole? Postačí jakýkoli identifikátor. Podle pravidel stylu musí název začínat písmenem T velkým písmem. Tímto způsobem můžete identifikátor odlišit od ostatních. Následující část názvu může být vymyšlena v souladu se specifickými daty, která mají být uložena v poli. Druhý název komponenty musí také začínat velkým písmenem. T Vector může ukládat informace o souřadnicích abstraktního vektoru.

Pokud jde o typ prvků v poli, může být dříve zadaný nebo standardní. K vytváření indexů se používají celá čísla a typ bude rozsah. Řekněme, že typ 1...20 znamená, že pole se skládá z dvaceti prvků, z nichž každý odpovídá celému číslu od jedné do dvaceti.

Pole je komplexní (složený, strukturovaný) datový typ, který se vyznačuje následujícími vlastnostmi:

· prvky pole mají na rozdíl od struktur stejný typ, takže každý prvek pole zabírá stejné množství paměti;

· pole je umístěno v paměti RAM a ne na externím zařízení, jako jsou soubory (2. semestr);

· prvky pole zabírají po sobě jdoucí buňky, na rozdíl např. od seznamů (2. semestr).

K prvkům pole lze v C++ přistupovat dvěma způsoby.

První pomocí pořadového čísla prvku pole, který se nazývá index , je typický pro mnoho programovacích jazyků a je pokryt v prvním semestru. Je to jednodušší a známější pro ty, kteří jazyk studovali Pascal. Index může být výraz celého čísla nebo kompatibilního typu, včetně konstanty nebo proměnné. Jako index nelze použít výraz skutečného typu.

Kromě toho má C++ schopnost zpracovávat pole pomocí ukazatele (adresy) , protože v C++ existuje vztah mezi poli a ukazateli. Navzdory skutečnosti, že v první metodě program nemá speciální typ pro práci s adresami, stále se používají ukazatele.

Pole mohou mít jeden nebo více rozměrů. Tato část pojednává o jednorozměrném poli, někdy nazývaném vektor , implikující vektor v n-rozměrný prostor. Práce s dvourozměrnými poli ( matrice) pojednáno v kap. 5. Tři a více rozměrů se v praxi používají zřídka, protože taková pole zabírají velké množství paměti RAM.

Všude, co následuje, slovem „pole“ rozumíme jednorozměrné pole.

Z hlediska času (fáze), kdy je paměť alokována pro pole, existují dva typy. Paměť pro dynamický Pole je alokováno během provádění programu, a pokud pole není potřeba, lze pro něj uvolnit paměť. Taková pole jsou zvažována ve druhém semestru.

Jednorozměrné pole s pevným rozměrem (říkejme tomu statický ) se obecně prohlašuje takto:

název typu [N];

Tady typ- typ prvků pole. Podívejme se nejprve na jednoduché typy (int, float, char), ale můžete použít například i složité struktury. název se píše podle pravidel identifikátorů. Každý prvek pole má stejný název, mění se pouze index nebo číslo prvku. N- rozměr (nebo velikost) pole ve formě celočíselné konstanty nebo konstantního výrazu. Tato hodnota určuje počet buněk RAM vyhrazených pro pole. Například:

plovák A; nebo konst n=10; plovoucí A[n];

Výhoda druhého způsobu s předběžnou deklarací rozměru jako konstanty je následující. Pokud potřebujete změnit rozměr pole, pak to stačí udělat na jednom místě v programu při definování konstanty.

Na rozdíl od dynamického pole je u statického pole paměť vyhrazena pro umístění ve fázi kompilace Nčísla zadaného typu (10 reálných čísel). Pole vyžaduje paměť k*N byte (4*10 ), kde k- požadovaný počet bajtů pro umístění jednoho prvku zadaného typu (jedno číslo typu plovák). Tato paměť je zachována po celou dobu provádění programu, přesněji řečeno funkce nebo bloku, kde je pole popsáno. Požadované množství paměti je určeno programově pomocí operace velikost následujícím způsobem:

M=velikost (typ)*N; nebo M= velikost (jméno); nebo M= velikost jména;

Kde M- proměnná typu integer, která určuje velikost pole v bajtech. Typ musí být zapsán v závorkách, ale název lze psát bez závorek. Následující program vytiskne číslo 40 dvakrát.

plovák A; int Ml, M2;

M1=velikost(float)*10; // Ale M1=velikost plováku *10;- chyba!

M2=velikost(A); // nebo M2 = velikost A;

cout<

V mnoha moderních programovacích systémech, včetně C++, začíná číslování prvků pole od 0. Potom A- poslední prvek pole. Je to dáno používáním ukazatelů při práci s poli (viz 2. semestr). Proto se v našem příkladu index změní z 0 na 9 včetně, tzn index posledního prvku pole je o jeden menší než jeho rozměr. Deklarovaných 10 prvků pole je označeno takto: A, A, A,…, A. C++ nemá kontrolu hranic polí. Můžete jít za jeho hranici a zapsat hodnotu do nějaké proměnné nebo dokonce do programového kódu. O takové ovládání se musí postarat programátor.

Při použití statických polí nastávají problémy, pokud předem neznáme velikost pole. V tomto případě deklarujeme pole maximální dimenze, která je obvykle známá. Představujeme skutečný rozměr a používáme jej dále, například v cyklech a pro jiné účely:

const nmax=100; plovák X;

int n; cout<<”Input the size of array ”; cin>>n;

/* D Spolupracujeme také s n(ne s nmax) zadejte je například prvky pole.* /

for (int i=0; i

{ // Tento řádek lze vynechat spolu se složenými závorkami.

cout<<”X[“<

cin>X[i];

Tato metoda je jednodušší, ale z hlediska alokace paměti neefektivní, jelikož si „objednáme“ více paměti, než ve skutečnosti spotřebujeme. V takových případech se profesionálně používají výkonnější dynamická pole (viz 2. semestr).

Array (programování)

Indexové pole(také v některých programovacích jazycích stůl, řádek) - pojmenovaná sada proměnných stejného typu, umístěná v paměti bezprostředně za sebou (na rozdíl od seznamu), přístupná pomocí indexu.

Index pole – celé číslo nebo hodnota typu castable na celé číslo, ukazující na konkrétní prvek pole.

obecný popis

Pole – uspořádaná sada dat pro ukládání dat jednoho typu, identifikovaná jedním nebo více indexy. V nejjednodušším případě má pole konstantní délku a ukládá datové jednotky stejného typu.

Počet použitých indexů pole se může lišit. Jsou volána pole s jedním indexem jednorozměrný, se dvěma - dvourozměrný atd. Jednorozměrné pole v matematice striktně neodpovídá vektoru, dvourozměrné pole striktně neodpovídá matici. Nejčastěji se používají pole s jedním nebo dvěma indexy, méně často - se třemi a ještě více indexů je extrémně vzácné.

Příklad statického pole v Pascalu -

WordArray: pole [ Word ] of Integer ; // Statické, velikost = High(Word) + 1 multiArray: pole [ Byte , 1 ..5 ] of Char ; // Statické pole, 2 dimenze rangeArray: pole [ 5 ..20 ] of String ; // Statické pole, velikost = 16

Příklad statického pole v C -

Int Array[ 10 ] ; // Statické, velikost 10, základní datový typ - int double Array[ 12 ] [ 15 ] ; // Statické pole, 2 rozměry, základní datový typ - číslo // se zlomkovou částí (double)

Podpora indexových polí (vlastní deklarační syntaxe, funkce pro práci s prvky atd.) je dostupná ve většině programovacích jazyků vyšší úrovně. Maximální přípustná velikost pole, typy a rozsahy hodnot indexu, omezení typů prvků jsou určeny programovacím jazykem a/nebo konkrétním překladačem.

V programovacích jazycích, které umožňují programátorovi deklarovat své vlastní typy, je zpravidla možné vytvořit typ „pole“. Tato definice typu může specifikovat velikost, typ prvku, rozsah hodnot a typy indexu. V budoucnu je možné definovat proměnné vytvořeného typu. Všechny takové proměnné pole mají stejnou strukturu. Některé jazyky podporují operace přiřazení pro proměnné pole (když jedna operace přiřadí hodnoty odpovídajících prvků jiného pole všem prvkům pole).

Deklarování typu "array" v Pascalu -

Typ TArrayType = pole [0 ..9] of Integer; (* Prohlášení typu "pole" *) var arr1, arr2, arr3: TArrayType; (* Deklarace tří proměnných pole stejného typu *)

Specifické typy polí

Dynamická pole

Dynamický je pole, jehož velikost se může během provádění programu měnit. Chcete-li změnit velikost dynamického pole, musí programovací jazyk, který taková pole podporuje, poskytovat vestavěnou funkci nebo operátor. Dynamická pole poskytují možnost flexibilnější práce s daty, protože umožňují nepředvídat objem uložených dat, ale upravit velikost pole podle skutečně požadovaných objemů. Také se nazývají běžná, nedynamická pole statický.

Příklad dynamického pole v Delphi

ByteArray: Pole Byte ; // Jednorozměrné pole multiArray: Pole pole řetězce ; // Vícerozměrné pole

Příklad dynamického pole v C

Float *pole1; // Jednorozměrné pole int **pole2; // Vícerozměrné pole pole1=(float *) malloc (10 *sizeof (float) ) ; // každému přidělí 10 bloků sizeof(float) bajtů pole2=(int **) malloc (16 *sizeof (int ) ) ; // alokace 16*8 bloků sizeof(int) bytů každému pro (i=0;i<16 ;i++) array2[ i] =(int *) malloc (8 *sizeof (int ) ) ;

Heterogenní pole

Heterogenní je pole, do kterého lze přímo zapisovat různé prvky do hodnot patřících k různým datovým typům. Pole, které ukládá ukazatele na hodnoty různých typů, není heterogenní, protože samotná data uložená v poli patří k jedinému typu - typu „ukazatel“. Heterogenní pole jsou vhodná jako univerzální struktura pro ukládání datových sad libovolných typů. Nedostatek jejich podpory v programovacím jazyce vede k potřebě implementovat složitější schémata ukládání dat. Na druhou stranu implementace heterogenity vyžaduje složitější mechanismus podpory polí v překladači jazyků.

Pole polí

Vícerozměrná pole jsou obvykle implementována jako jednorozměrná pole, z nichž každý prvek je odkazem na jiné jednorozměrné pole.

Implementace

Standardní způsob implementace statických polí s jedním typem prvku je následující:

  1. Pro pole je alokován souvislý blok paměti o objemu S*m 1 *m 2 *m 3 …m n, kde S je velikost jednoho prvku a m 1 …m n jsou velikosti rozsahů indexů (tj. , počet hodnot, které může nabývat odpovídající index).
  2. Při přístupu k prvku pole A se adresa odpovídajícího prvku vypočítá jako B+S*(i 1p *m 1 +i 2p *m 2 +…+i (n-1)p *m n-1 +i np ), kde B - báze (adresa začátku bloku paměti pole), i kp je hodnota k-tého indexu zmenšená na celé číslo s nulovým počátečním offsetem.

Tímto způsobem se vypočítá adresa prvku s danou sadou indexů tak, aby doba přístupu ke všem prvkům pole byla stejná.

První prvek pole může mít v závislosti na programovacím jazyce jiný index. Existují tři hlavní typy polí: pole založené na nule (založené na nule), založené na jedné (založené na jedné) a založené na konkrétní hodnotě určené programátorem (založené na n). Počítání indexu prvku pole od nuly je typičtější pro jazyky nižší úrovně, ale tato metoda byla popularizována v jazycích vyšší úrovně programovacím jazykem C.

Složitější typy polí – dynamické a heterogenní – jsou obtížněji implementovatelné.

Výhody

  • snadnost výpočtu adresy prvku podle jeho indexu (protože prvky pole jsou umístěny jeden po druhém)
  • stejný přístupový čas ke všem prvkům
  • malá velikost prvků: skládají se pouze z informačního pole

Nedostatky

  • pro statické pole - nedostatek dynamiky, nemožnost odebrat nebo přidat prvek bez posunutí ostatních
  • pro dynamické a/nebo heterogenní pole – nižší (ve srovnání s běžným statickým) výkonem a další režie pro podporu dynamických vlastností a/nebo heterogenity.
  • při práci s polem ve stylu C (s ukazateli) a při absenci dalších ovládacích prvků - hrozba překročení hranic pole a poškození dat