Mikä on dereference-operaattori?

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