C mutatók

A mutatók a C és a C ++ programozás hatékony tulajdonságai. Mielőtt megtanulnánk a mutatókat, ismerkedjünk meg a címekkel a C programozásban.

Cím a C

Ha a programban van változó változó, &var megadja a címét a memóriában.

A scanf() függvény használata során számos alkalommal használtuk a címet.

Itt a felhasználó által megadott érték a var változó címében tárolódik. Vegyünk egy működő példát.

Kimenet

var: 5 address of var: 2686778

Megjegyzés: A fenti kód futtatásakor valószínűleg más címet kap.

C Mutatók

A mutatók (mutatóváltozók) olyan speciális változók, amelyeket nem címek, hanem értékek helyett címek tárolására használnak.

Mutatószintaxis

Így deklarálhatjuk a mutatókat.

Itt deklaráltunk egy int típusú p mutatót.

Ön ilyen módon is deklarálhatja a mutatókat.

Vegyünk egy másik példát a mutatók deklarálására.

Itt deklaráltunk egy p1 mutatót és egy normális p2 változót.

Címek hozzárendelése mutatókhoz

Vegyünk példát.

Itt 5 van hozzárendelve a c változóhoz. És a c címet a pc mutatóhoz rendeltük.

Get point of point pointing point

Ahhoz, hogy a mutatók által mutatott dolog értékét megkapjuk, a * operátor. Például:

Itt a c címet hozzárendelik a pc mutatóhoz. Az adott címben tárolt érték eléréséhez a * pc-t használtuk.

Megjegyzés: A fenti példában a pc mutató, nem pedig *pc. Nem tehet és nem is tehet például *pc = &c;

Egyébként a * -t dereference operátornak hívják ( amikor mutatóval dolgoznak). Mutatóval működik, és megadja a mutatóban tárolt értéket.

Mutatók által mutatott érték megváltoztatása

Vegyünk egy példát.

A c mutatót hozzárendeltük a pc mutatóhoz.

Ezután a c értékét 1-re változtattuk. Mivel a pc és a c címe ugyanaz, a *pc 1-et ad nekünk.

Vegyünk egy másik példát.

A c mutatót hozzárendeltük a pc mutatóhoz.

Ezután a *pc értéket 1-re változtattuk a *pc = 1;. Mivel a pc és a c címe megegyezik, a c értéke 1-vel lesz.

Vegyünk még egy példát.

Kezdetben, c címét a pc mutatóhoz rendeljük a pc = &c; segítségével. Mivel c értéke 5, *pc 5-öt ad.

Ezután ad címét a pc mutatóhoz rendeljük a pc = &d; segítségével. Mivel d értéke -15, *pc -15 .

Példa: Mutatók működése

Vegyünk egy működő példát.

Kimenet

Address of c: 2686784Value of c: 22Address of pointer pc: 2686784Content of pointer pc: 22Address of pointer pc: 2686784Content of pointer pc: 11Address of c: 2686784Value of c: 2

A program magyarázata

  1. int* pc, c;

    Itt , egy mutató pc és egy normál c változó, mindkettő int típusú, létrejön.
    Mivel a pc és a c kezdetben nincs inicializálva, a mutató pc vagy nem mutat címre, vagy egy véletlenszerű cím. A c változónak van címe, de véletlenszerű szemétértéket tartalmaz.
  2. c = 22;

    Ez a c változóhoz 22-et rendel. Vagyis 22 a c változó memóriahelyén van tárolva.
  3. pc = &c;

    Ez hozzárendeli a c változó címét a mutató pc-hez.
  4. c = 11;

    Ez 11-et rendel a c változóhoz.
  5. *pc = 2;

    Ez megváltoztatja a memória helyén a mutató által mutatott értéket 2-re.

Gyakori hibák a mutatókkal való munkában

Tegyük fel, hogy a mutató pc-t szeretné mutasson a c címére. Ezután

Itt egy példa a mutatószintaxis kezdőknek gyakran zavarónak találják.

Miért nem kapunk hibát, amikor int *p = &c; használatával?

Ez azért van, mert

ekvivalens a

Mindkét esetben mutatót hozunk létre p (nem pedig *p) és hozzárendeli a &c -t.

A zavart elkerülése érdekében használhatjuk a következő állítást:

Most már tudod, hogy melyek a mutatók, megtanulod, hogyan mutatók a következő oktatóanyag tömbjeihez kapcsolódnak.

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük