Mi a mutató a C-ben?
A mutató a C-ben egy olyan változó, amely egy másik változó címét tárolja. A mutató egy másik mutatófunkcióra is hivatkozhat. A mutató növelhető / csökkenthető, vagyis a következő / előző memóriahelyre mutat. A mutató célja a memória megtakarítása és a gyorsabb végrehajtási idő elérése.
A mutatók használata a C
Ha egy int típusú v változót deklarálunk, akkor a v valóban értéket tárol.
v most nulla.
Mindazonáltal minden változónak, az értéken kívül, megvan a címe is (vagy egyszerűen megfogalmazva, ahol a memóriában található). A cím lekérhető úgy, hogy egy ampersandot (&) tesz a változó neve elé.
Ha kinyomtatja a változó címét a képernyőn, akkor az mint egy teljesen véletlenszerű szám (ráadásul futtatásonként eltérhet).
Próbáljuk ki ezt a gyakorlatban a C mutatóval példa
A program kimenete -480613588.
Most, mi az a mutató? Az érték tárolása helyett a mutató y eltárolja a változó címét.
Mutató változó
Int * y = & v;
VÁLTOZÓ
|
POINTER
|
Megnevezett tárhely / memória címben tárolt érték
|
Változó, amely egy másik változó tárolási / memória címére mutat
|
Mutató deklarálása
A változókhoz hasonlóan a C progra mutatói is Az mminget be kell jelenteni, mielőtt felhasználhatók lennének a programjában. A pointerek bármit megnevezhetnek, ameddig csak akarják, amíg betartják a C névadási szabályait. A mutató deklarációnak a következő formája van.
data_type * pointer_variable_name;
Itt,
- data_type a mutató “C” típusú változóinak alaptípusa, és jelzi annak a változónak a típusát, amelyre a mutató mutat.
- A csillag (*: ugyanaz a használt csillag szorzáshoz), amely indirection operátor, deklarál egy mutatót.
Lássunk néhány érvényes mutató deklarációt ebben a C pointerek oktatóanyagban:
Mutató inicializálása
A mutató deklarálása után inicializáljuk, mint a szokásos változókat változó címmel. Ha a C programozás mutatóit nem inicializálják és nem használják a programban, az eredmények kiszámíthatatlanok és potenciálisan katasztrofálisak.
Egy változó címének megszerzéséhez használjuk az ampersand (&) operátort, amely egy olyan változó neve elé kerül, amelynek a címére szükségünk van. A mutató inicializálása a következő szintaxissal történik.
Mutatószintaxis
pointer = &variable;
Egy egyszerű program a mutató ábrázolásához az alábbiakban található:
Kimenet:
Address stored in a variable p is:60ff08Value stored in a variable p is:10
Operátor |
Jelentés |
* |
2 célt szolgál
- Mutató deklarálása
- Visszaadja a hivatkozott változó értékét
|
& |
Csak 1 célt szolgál
|
A C típusú mutatók típusai
Az alábbiakban bemutatjuk a C különböző típusú mutatóit:
Nullmutató
Null mutatót hozhatunk létre azzal, hogy null értéket rendelünk a mutató deklarálása során. Ez a módszer akkor hasznos, ha a mutatóhoz nincs hozzárendelve cím. A null mutató mindig 0 értéket tartalmaz.
A következő program bemutatja a null mutató használatát:
#include <stdio.h>int main(){int *p = NULL; //null pointerprintf("The value inside variable p is:\n%x”,p);return 0;}
Kimenet:
The value inside variable p is:0
Érvénytelen mutató
A C programozásban az érvénytelen mutatót általános mutatónak is hívják. Nincs szabványos adattípusa. A void kulcsszó használatával egy érvénytelen mutató jön létre. Bármely változó címének tárolására használható.
A következő program a void mutató használatát szemlélteti:
#include <stdio.h>int main(){void *p = NULL; //void pointerprintf("The size of pointer is:%d\n",sizeof(p));return 0;}
Kimenet:
The size of pointer is:4
Vadmutató
A mutató akkor vad jelző, ha nem inicializáljuk semmire. Az ilyen típusú C-mutatók nem hatékonyak, mert olyan ismeretlen memóriahelyekre utalhatnak, amelyek problémákat okozhatnak programunkban, és a program összeomlásához vezethetnek. Mindig óvatosnak kell lennie, amikor vad mutatókkal dolgozik.
A következő program szemlélteti a vad pointer használatát:
#include <stdio.h>int main(){int *p; //wild pointerprintf("\n%d",*p);return
read more