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: XP NRG — первые в мире создатели искусственного сознания 2024, November
Anonim

Ukazovateľ vs Array

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

Čo je to ukazovateľ?

Ukazovateľ je dátový typ, ktorý ukladá adresu pamäťového miesta, 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äti, 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 tabuliek atď., By použitie ukazovateľov zlepšilo výkon. Je to z toho dôvodu, že dereferencovanie a kopírovanie ukazovateľov je lacnejšie ako skutočné kopírovanie a prístup k údajom, na ktoré ukazovatele poukazujú. Nulový ukazovateľ je ukazovateľ, ktorý na nič neukazuje. V Jave by prístup k nulovému ukazovateľu vygeneroval výnimku nazvanú NullPointerException.

Čo je to pole?

Na obrázku 1 je kúsok kódu, ktorý sa zvyčajne používa na deklaráciu a priradenie hodnôt k poľu. Obrázok 2 zobrazuje, ako by vyzeralo pole v pamäti.

hodnoty [0] = 100;

hodnoty [1] = 101;

hodnoty [2] = 102;

hodnoty [3] = 103;

hodnoty [4] = 104;

Obrázok 1: Kód na vyhlásenie a priradenie hodnôt k poľu

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

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

Vyššie uvedený kód definuje pole, do ktorého je možné uložiť 5 celých čísel a je k nim prístup 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 v ňom získa svoj vlastný priestor.. Po definovaní poľa je jeho veľkosť 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. Ale vo väčšine prípadov skutočne použijeme menší počet prvkov, ako sme pridelili. Takže značné množstvo pamäte je skutočne zbytočné. Na druhej strane, ak „dostatočne veľké pole“nie je skutočne dosť veľké, program by zlyhal.

Aký je rozdiel medzi ukazovateľmi a poľami?

Ukazovateľ je dátový typ, ktorý ukladá adresu pamäťového miesta, v ktorom sú uložené niektoré údaje, zatiaľ čo polia sú najbežnejšie používanou dátovou štruktúrou na ukladanie kolekcie prvkov. V programovacom jazyku C sa indexácia poľa vykonáva pomocou aritmetiky ukazovateľa (tj. 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 po sebe nasledujúcich pamäťových miest, považovať za pole. Ďalej existuje rozdiel v tom, ako operátor sizeof pracuje na ukazovateľoch a poliach. Pri použití na pole vráti operátor sizeof celú veľkosť poľa, zatiaľ čo pri použití na ukazovateľ vráti iba veľkosť ukazovateľa.

Odporúčaná: