A C-ben lévő mutatókat könnyű és szórakoztató megtanulni. Néhány C programozási feladatot könnyebben elvégezhet a mutató, és más feladatokat, például a dinamikus memória-allokációt, nem lehet végrehajtani mutatók használata nélkül. Tehát szükségessé válik a mutatók megtanulása a tökéletes C programozóvá váláshoz. Kezdjük el megtanulni őket egyszerű és egyszerű lépésekkel.
Mint tudják, minden változó memóriahely, és minden memóriahelynek meg van határozva a címe, amelyhez az ampersand () operátor, amely egy címet jelöl a memóriában. Tekintsük a következő példát, amely kinyomtatja a definiált változók címét –
A fenti kód összeállításakor és végrehajtásakor a következőket állítja elő: eredmény –
Address of var1 variable: bff5a400Address of var2 variable: bff5a3f6
Mik azok a mutatók?
A mutató egy olyan változó, amelynek értéke egy másik változó címe, azaz közvetlen cím A memória helyének hasonlóan. Mint minden változóhoz vagy konstanshoz, minden változó címének tárolása előtt deklarálnia kell egy mutatót. A mutató változó deklarációjának általános formája –
type *var-name;
Itt írja be a mutató alaptípusát; érvényes C adattípusnak kell lennie, a var-name pedig a mutatóváltozó neve. A mutató deklarálásához használt * csillag megegyezik a szorzáshoz használt csillaggal. Ebben a nyilatkozatban azonban a csillagot arra használjuk, hogy egy változót mutatóként jelöljünk ki. Vessen egy pillantást az érvényes mutató deklarációkra –
int *ip; /* pointer to an integer */double *dp; /* pointer to a double */float *fp; /* pointer to a float */char *ch /* pointer to a character */
Az összes mutató értékének tényleges adattípusa, legyen az egész, lebegő, karakteres vagy más , ugyanaz, egy hosszú hexadecimális szám, amely egy memória címet képvisel. Az egyetlen különbség a különböző adattípusok mutatói között az a változó vagy konstans adattípusa, amelyre a mutató mutat.
Hogyan használjuk a mutatókat?
Van néhány fontos művelet, amit a mutatók segítségével nagyon gyakran meg fogunk tenni. (a) Meghatározunk egy mutató változót, (b) egy változó címét rendeljük egy mutatóhoz, és (c) végül elérjük az értéket a mutató változóban elérhető címen. Ez unary operátor * használatával történik, amely visszaadja az operandus által megadott címen található változó értékét. A következő példa ezeket a műveleteket használja –
A fenti kód összeállításakor és végrehajtásakor a következő eredményt kapja –
Address of var variable: bffd8b3cAddress stored in ip variable: bffd8b3cValue of *ip variable: 20
NULL mutatók
Mindig jó gyakorlat NULL értéket rendelni egy mutató változóhoz, ha nincs pontos hozzárendelendő cím. Ez a változó deklarálásakor történik. A NULL hozzárendelt mutatót null pointernek hívják.
A NULL mutató egy állandó értékű, nulla értékű, amelyet több szabványos könyvtár definiál. Vegye figyelembe a következő programot –
#include <stdio.h>int main () { int *ptr = NULL; printf("The value of ptr is : %x\n", ptr ); return 0;}
A fenti kód összeállításakor és végrehajtásakor a következő eredményt kapja –
The value of ptr is 0
Az operációs rendszerek többségében a programok nem férhetnek hozzá a 0-os címhez tartozó memóriához, mert ezt a memóriát az operációs rendszer fenntartja. A 0 memóriacímnek azonban különleges jelentősége van; azt jelzi, hogy a mutató nem egy elérhető memóriahelyre mutat. De szokás szerint, ha egy mutató a null (nulla) értéket tartalmazza, akkor feltételezhetően semmire sem mutat.
A null mutató ellenőrzéséhez használhat egy “if” utasítást az alábbiak szerint –
if(ptr) /* succeeds if p is not null */if(!ptr) /* succeeds if p is null */
Mutatók részletesen
A mutatók sok, de egyszerű fogalommal bírnak, és nagyon fontosak a C programozás szempontjából. A következő fontos mutatókoncepcióknak világosaknak kell lenniük minden C programozó számára –
Sr.No. | Koncepció & Leírás |
---|---|
1 | Mutatószámtani
Négy számtani operátor használható a mutatókban: ++, -, +, – |
2 | Mutatók tömbje
Meghatározhat tömböket számos mutató megtartására. |
3 | Mutató mutatóra
C lehetővé teszi, hogy mutató legyen egy mutatón és így tovább. |
4 | Mutatók átadása a C függvényekben
Átadás egy hivatkozás vagy cím szerinti argumentum lehetővé teszi az átadott argumentum megváltoztatását a hívó függvényben a hívott függvény által. |
5 | Return mutató a függvényekből a C-ben
A C lehetővé teszi, hogy a függvény visszaadjon egy mutatót a helyi változóhoz, a statikus változóhoz és a dinamikusan lefoglalt memóriához is. |