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: Počítačové sítě 10 UDP, TCP a SCTP 2024, Listopad
Anonim

Ukazatel vs Array

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 k uložení kolekce prvků. Většina programovacích jazyků poskytuje metody pro snadné deklarace polí a přístup k prvkům v polích.

Co je to 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ěti, 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í tabulek atd., By použití ukazatelů zlepšilo výkon. Důvodem je, ž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á ukazatele ukazují. Nulový ukazatel je ukazatel, který na nic neukazuje. V Javě by přístup k nulovému ukazateli vygeneroval výjimku nazvanou NullPointerException.

Co je to pole?

Na obrázku 1 je ukázka 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.

hodnoty [0] = 100;

hodnoty [1] = 101;

hodnoty [2] = 102;

hodnoty [3] = 103;

hodnoty [4] = 104;

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

100 101 102 103 104 Rejstřík: 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 je k nim přístup pomocí indexů 0 až 4. Jednou důležitou vlastností pole je to, že celé pole je přiděleno jako jeden blok paměti a každý prvek má v poli svůj vlastní prostor. Jakmile je pole definováno, jeho velikost je pevná. Takže pokud si nejste jisti velikostí pole v době kompilace, budete muset definovat dostatečně velké pole, abyste byli na bezpečné straně. Většinou ale ve skutečnosti použijeme menší počet prvků, než kolik jsme přidělili. Značná část paměti je tedy skutečně zbytečná. Na druhou stranu, pokud „dostatečně velké pole“není ve skutečnosti dostatečně velké, program by selhal.

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 nejčastěji používanou datovou strukturou k ukládání kolekce prvků. V programovacím jazyce C se indexování pole provádí pomocí aritmetiky ukazatele (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é následují, považovat za pole. Dále existuje rozdíl v tom, jak operátor sizeof pracuje na ukazatelích a polích. Při použití na pole vrátí operátor sizeof celou velikost pole, zatímco při použití na ukazatel vrátí pouze velikost ukazatele.

Doporučená: