Rozdíl mezi ukazatelem a polem

Rozdíl mezi ukazatelem a polem
Rozdíl mezi ukazatelem a polem

Video: Rozdíl mezi ukazatelem a polem

Video: Rozdíl mezi ukazatelem a polem
Video: C# beginners :- Assembly , EXE and DLL 2024, Červenec
Anonim

Ukazatel vs pole

Ukazatel je datový typ, který obsahuje odkaz na paměťové místo (tj. proměnná ukazatele ukládá adresu paměťového místa, ve kterém jsou uložena některá data). Pole jsou nejběžněji používanou datovou strukturou pro ukládání kolekce prvků. Většina programovacích jazyků poskytuje metody pro snadnou deklaraci polí a přístup k prvkům v polích.

Co je ukazatel?

Ukazatel je datový typ, který ukládá adresu paměťového místa, ve kterém jsou uložena některá data. Jinými slovy, ukazatel obsahuje odkaz na paměťové místo. Přístup k datům uloženým v paměťovém místě, na které odkazuje ukazatel, se nazývá dereferencování. Při provádění opakujících se operací, jako je procházení stromů/řetězců, vyhledávání v tabulkách atd., by použití ukazatelů zlepšilo výkon. Je to proto, že dereferencování a kopírování ukazatelů je levnější než skutečné kopírování a přístup k datům, na které ukazují ukazatele. Nulový ukazatel je ukazatel, který na nic neukazuje. V Javě by přístup k nulovému ukazateli vygeneroval výjimku nazvanou NullPointerException.

Co je pole?

Na obrázku 1 je znázorněn kus kódu, který se obvykle používá k deklaraci a přiřazení hodnot k poli. Obrázek 2 ukazuje, jak by pole vypadalo v paměti.

int values[5];

values[0]=100;

values[1]=101;

values[2]=102;

values[3]=103;

values[4]=104;

Obrázek 1: Kód pro deklaraci a přiřazení hodnot poli

100 101 102 103 104
Index: 0 1 2 3 4

Obrázek 2: Pole uložené v paměti

Výše uvedený kód definuje pole, do kterého lze uložit 5 celých čísel a k nim se přistupuje pomocí indexů 0 až 4. Jednou z důležitých vlastností pole je, že celé pole je alokováno jako jeden blok paměti a každý prvek dostane svůj vlastní prostor v poli. Jakmile je pole definováno, jeho velikost je pevná. Pokud si tedy nejste jisti velikostí pole v době kompilace, museli byste definovat dostatečně velké pole, abyste byli na bezpečné straně. Ale většinou ve skutečnosti použijeme menší počet prvků, než jsme alokovali. Značné množství paměti je tedy ve skutečnosti promarněno. Na druhou stranu, pokud „dostatečně velké pole“není ve skutečnosti dostatečně velké, program se zhroutí.

Jaký je rozdíl mezi ukazateli a poli?

Ukazatel je datový typ, který ukládá adresu paměťového místa, ve kterém jsou uložena některá data, zatímco pole jsou nejběžněji používanou datovou strukturou pro uložení kolekce prvků. V programovacím jazyce C se indexování pole provádí pomocí ukazatelové aritmetiky (tj. i-tý prvek pole x by byl ekvivalentní (x+i)). Proto v C lze sadu ukazatelů, které ukazují na sadu paměťových míst, která jsou po sobě jdoucí, považovat za pole. Dále je rozdíl v tom, jak operátor sizeof pracuje s ukazateli a poli. Při použití na pole operátor sizeof vrátí celou velikost pole, zatímco při použití na ukazatel vrátí pouze velikost ukazatele.

Doporučuje: