Rozdiel medzi ukazovateľom a poľom

Rozdiel medzi ukazovateľom a poľom
Rozdiel medzi ukazovateľom a poľom

Video: Rozdiel medzi ukazovateľom a poľom

Video: Rozdiel medzi ukazovateľom a poľom
Video: PLAYSTATION - ТЕЛЕФОН! 2024, November
Anonim

Ukazovateľ vs pole

Ukazovateľ je typ údajov, ktorý obsahuje odkaz na pamäťové miesto (t.j. premenná ukazovateľa ukladá adresu pamäťového miesta, v ktorom sú uložené niektoré údaje). Polia sú najčastejšie používanou dátovou štruktúrou na ukladanie kolekcie prvkov. Väčšina programovacích jazykov poskytuje metódy na jednoduché deklarovanie polí a prístup k prvkom v poliach.

Čo je ukazovateľ?

Ukazovateľ je typ údajov, ktorý ukladá adresu miesta v pamäti, v ktorom sú uložené niektoré údaje. Inými slovami, ukazovateľ obsahuje odkaz na pamäťové miesto. Prístup k údajom uloženým v pamäťovom mieste, na ktoré odkazuje ukazovateľ, sa nazýva dereferencovanie. Pri vykonávaní opakujúcich sa operácií, ako je prechádzanie stromami/reťazcami, vyhľadávanie v tabuľkách atď., by použitie ukazovateľov zlepšilo výkon. Je to preto, že dereferencovanie a kopírovanie ukazovateľov je lacnejšie ako skutočné kopírovanie a prístup k údajom, na ktoré poukazujú. Nulový ukazovateľ je ukazovateľ, ktorý na nič neukazuje. V jazyku Java by prístup k nulovému ukazovateľu vygeneroval výnimku s názvom NullPointerException.

Čo je pole?

Na obrázku 1 je znázornený kus kódu, ktorý sa zvyčajne používa na deklarovanie a priraďovanie hodnôt do poľa. Obrázok 2 znázorňuje, ako by pole vyzeralo v pamäti.

int values[5];

values[0]=100;

values[1]=101;

values[2]=102;

values[3]=103;

values[4]=104;

Obrázok 1: Kód na deklarovanie a priraďovanie hodnôt do poľa

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

Obrázok 2: Pole uložené v pamäti

Vyššie uvedený kód definuje pole, ktoré môže uložiť 5 celých čísel a pristupuje sa k nim pomocou indexov 0 až 4. Jednou z dôležitých vlastností poľa je, že celé pole je alokované ako jeden blok pamäte a každý prvok dostane svoju vlastný priestor v poli. Akonáhle je pole definované, jeho veľkosť je pevná. Takže ak si nie ste istí veľkosťou poľa v čase kompilácie, museli by ste definovať dostatočne veľké pole, aby ste boli na bezpečnej strane. Väčšinou však v skutočnosti použijeme menší počet prvkov, ako sme pridelili. Značné množstvo pamäte je teda skutočne premrhané. Na druhej strane, ak „dosť veľké pole“nie je v skutočnosti dostatočne veľké, program spadne.

Aký je rozdiel medzi ukazovateľmi a poliami?

Ukazovateľ je dátový typ, ktorý ukladá adresu miesta v pamäti, v ktorom sú uložené niektoré dáta, zatiaľ čo polia sú najbežnejšie používanou dátovou štruktúrou na ukladanie kolekcie prvkov. V programovacom jazyku C sa indexovanie poľa vykonáva pomocou aritmetiky ukazovateľa (t. j. i-tý prvok poľa x by bol ekvivalentný (x+i)). Preto v C možno množinu ukazovateľov, ktoré ukazujú na množinu pamäťových umiestnení, ktoré sú po sebe nasledujúce, považovať za pole. Ďalej je rozdiel v tom, ako operátor sizeof funguje na ukazovateľoch a poliach. Pri použití na pole operátor sizeof vráti celú veľkosť poľa, zatiaľ čo pri použití na ukazovateľ vráti iba veľkosť ukazovateľa.

Odporúča: