Különbség a mutató és a tömb között

Különbség a mutató és a tömb között
Különbség a mutató és a tömb között

Videó: Különbség a mutató és a tömb között

Videó: Különbség a mutató és a tömb között
Videó: LEFT HANDED Crochet Simple Daisy Flower Plant Pot 2024, November
Anonim

Mutató vs tömb

A mutató olyan adattípus, amely egy memóriahelyre való hivatkozást tartalmaz (azaz egy mutatóváltozó egy olyan memóriahely címét tárolja, amelyben bizonyos adatok vannak tárolva). A tömbök a leggyakrabban használt adatstruktúra elemek gyűjteményének tárolására. A legtöbb programozási nyelv lehetőséget biztosít a tömbök egyszerű deklarálására és a tömbök elemeinek elérésére.

Mi az a mutató?

A mutató egy olyan adattípus, amely egy olyan memóriahely címét tárolja, amelyen bizonyos adatokat tárolnak. Más szavakkal, a mutató hivatkozást tartalmaz egy memóriahelyre. A mutató által hivatkozott memóriahelyen tárolt adatok elérését hivatkozás megszüntetésének nevezzük. Ismétlődő műveletek, például fák/karakterláncok bejárása, táblázatkeresés stb. végrehajtásakor a mutatók használata javítja a teljesítményt. Ennek az az oka, hogy a hivatkozások megszüntetése és a mutatók másolása olcsóbb, mint a mutatók által mutatott adatok tényleges másolása és elérése. A nullmutató olyan mutató, amely nem mutat semmire. Java nyelven a null mutató elérése egy NullPointerException nevű kivételt generál.

Mi az a tömb?

Az 1. ábrán látható egy kódrészlet, amelyet általában egy tömb deklarálására és értékek hozzárendelésére használnak. A 2. ábra azt mutatja be, hogyan nézne ki egy tömb a memóriában.

int értékek[5];

values[0]=100;

értékek[1]=101;

értékek[2]=102;

values[3]=103;

értékek[4]=104;

1. ábra: Kód egy tömbhöz való értékek deklarálásához és hozzárendeléséhez

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

2. ábra: A memóriában tárolt tömb

A fenti kód egy tömböt határoz meg, amely 5 egész számot tud tárolni, és ezek 0-tól 4-ig terjedő indexekkel érhetők el. A tömb egyik fontos tulajdonsága, hogy a teljes tömb egyetlen memóriablokkként van lefoglalva, és minden elem megkapja a sajátját. saját hely a tömbben. Ha egy tömb definiálva van, a mérete rögzített. Tehát ha nem biztos a tömb méretében a fordítási időben, akkor elég nagy tömböt kell meghatároznia ahhoz, hogy a biztonságban legyen. De a legtöbbször valójában kevesebb elemet használunk, mint amennyit kiosztottunk. Tehát jelentős mennyiségű memória vész kárba. Másrészt, ha az „elég nagy tömb” valójában nem elég nagy, a program összeomlik.

Mi a különbség a mutatók és a tömbök között?

A mutató egy olyan adattípus, amely egy olyan memóriahely címét tárolja, ahol bizonyos adatok vannak tárolva, míg a tömbök a leggyakrabban használt adatszerkezetek egy elemgyűjtemény tárolására. A C programozási nyelvben a tömb indexelése mutató aritmetikával történik (azaz az x tömb i-edik eleme egyenértékű a (x+i)-vel). Ezért C-ben az egymás után következő memóriahelyek halmazára mutató mutatók halmaza tömbnek tekinthető. Továbbá különbség van abban, hogy a sizeof operátor hogyan működik mutatókon és tömbökön. Tömbre alkalmazva a sizeof operátor a tömb teljes méretét adja vissza, míg mutatóra alkalmazva csak a mutató méretét adja vissza.

Ajánlott: