Tietokoneohjelmoinnissa dereference-operaattori, joka tunnetaan myös epäsuorana operaattorina, toimii osoittimen muuttujalla ja palauttaa sijaintiarvon tai l-arvon, jonka se osoittaa muistiin. C-ohjelmointikielellä kunnioitusoperaattoria merkitään tähdellä ( * ).
Esimerkiksi C: ssä voimme julistaa muuttujan x, jolla on kokonaislukuarvo, ja muuttujaa p, joka pitää osoitinta muistin kokonaislukuarvoon:
int x; int * p;
Täällä tähti kertoo kääntäjälle, " p ei ole kokonaisluku, vaan osoitin muistiin, jossa on kokonaisluku." Täällä se ei ole dereference, vaan osa osoittimen ilmoituksesta.
Nyt voimme asettaa p : n paikkaan, joka on allokoitu x : n arvolle käyttäen & operaattoria, mikä tarkoittaa "osoitetta".
p = & x;
Tämä toiminto kertoo kääntäjälle: "Osoite muistissa, joka osoittaa, että osoite on kokonaisluku x ."
Jos haluat havainnollistaa, jos asetamme arvon x - 1 käyttäen tavanomaista menetelmää ja tulostetaan arvo, lähtö on 1 .
x = 1; printf ("% d", x);
Voimme kuitenkin myös muuttaa x : n arvoa viittaamalla p . Teemme tämän tähdellä:
* p = 2; printf ("% d", x);
Ja tulos muuttuu arvoksi 2 .
Toisin sanoen, kun p on ilmoitettu osoittimeksi, jonka tyyppi on sama kuin x, ja sen jälkeen asetetaan osoittamaan x: n arvoa, voimme käyttää x ja * p vaihdettavasti. Koska molemmat viittaavat samaan asiaan, yhden arvon muuttaminen muuttaa toisen arvoa.
Osoitin, ohjelmointitermit, muuttuja