Pointer vs Array
A mutató olyan adattípus, amely hivatkozást tartalmaz egy memóriahelyre (azaz a mutatóváltozó egy olyan memóriahely címét tárolja, amelyben bizonyos adatokat tárolnak). Az elemek gyűjteményének tárolására a tömbök a leggyakrabban használt adatszerkezetek. A legtöbb programozási nyelv módszereket biztosít a tömbök és a tömbökhez való hozzáférési elemek könnyű deklarálására.
Mi az a mutató??
A mutató olyan adattípus, amely egy olyan memóriahely címét tárolja, amelyben bizonyos adatokat tárolnak. Más szavakkal, egy mutató hivatkozást tartalmaz egy memóriahelyre. A memóriahelyen tárolt adatok elérését, amelyekre a mutató hivatkozik, dereferenciának nevezzük. Ismétlődő műveletek végrehajtásakor, mint például a fák / karakterláncok átvitele, asztali áttekintések stb., A mutatók használata javítaná a teljesítményt. Ennek oka az, hogy a mutatók levonása és másolása olcsóbb, mint a mutatók által jelzett adatok másolása és elérése. A nullmutató egy olyan mutató, amely nem mutat semmire. A Java-ban egy null-mutató elérése kivételt generál, amelyet NullPointerException-nek hívnak.
Mi az a tömb?
Az 1. ábrán látható kódrészlet, amelyet általában egy tömb értékének deklarálására és hozzárendelésére használnak. A 2. ábra azt mutatja be, hogy egy tömb hogyan nézne ki a memóriában.
int értékek [5]; értékeket [0] = 100; értékeket [1] = 101; értékeket [2] = 102; értékeket [3] = 103; értékek [4] = 104; |
1. ábra: Az értékek deklarálása és hozzárendelése a tömbhez
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 olyan tömböt határoz meg, amely 5 egész számot tárolhat, és amelyekhez 0–4 indexekkel lehet hozzájutni. A tömb egyik fontos tulajdonsága, hogy a teljes tömböt egyetlen memóriablokknak osztják el, és minden elem saját helyet kap a tömbben . Miután egy tömb meghatározásra került, rögzítik annak méretét. Tehát ha nem biztos a tömb méretében a fordításkor, akkor elég nagy tömböt kell definiálnia ahhoz, hogy biztonságban legyen. De a legtöbb alkalommal valójában kevesebb elemet fogunk használni, mint amennyit kiosztunk. Tehát jelentős mennyiségű memória pazarlik el. Másrészt, ha a „elég nagy tömb” valójában nem elég nagy, akkor a program összeomlik.
Mi a különbség a mutatók és a tömbök között??
A mutató olyan adattípus, amely egy olyan memóriahely címét tárolja, amelyben bizonyos adatokat tárolnak, míg a tömbök a leggyakrabban használt adatszerkezetek az elemgyűjtemény tárolására. A C programozási nyelvben a tömb indexelését mutató aritmetikai módszerrel végezzük (vagyis az x tömb i-edik eleme ekvivalens * (x + i) -val). Ezért a C pontban az egymást követő memóriahelyek halmazára mutató mutatók halmaza tömbnek tekinthető. Ezenkívül különbség van abban, hogy az operátor mérete miként működik a mutatókon és tömbökön. Ha egy tömbre alkalmazunk, akkor a operátor mérete a tömb teljes méretét adja vissza, míg egy mutatóra történő alkalmazáskor csak a mutató méretét adja vissza..