Kaip jau žinome 'kas yra rodyklė' , rodyklė yra kintamasis, kuriame saugomas kito kintamojo adresas. Nuorodos operatorius taip pat žinomas kaip netiesioginis operatorius, kurį žymi (*). Kai netiesioginis operatorius (*) naudojamas su žymeklio kintamuoju, tada jis vadinamas nurodant žymeklį. Kai atšaukiame žymeklio nuorodą, bus grąžinta kintamojo, nurodyto šiuo žymekliu, reikšmė.
Kodėl naudojame nuorodos panaikinimo žymeklį?
Nurodymas žymeklyje naudojamas dėl šių priežasčių:
- Jis gali būti naudojamas norint pasiekti arba valdyti duomenis, saugomus atminties vietoje, kuri yra nukreipta žymekliu.
- Bet kokia operacija, taikoma žymekliui, į kurį nukreipta nuoroda, tiesiogiai paveiks kintamojo, į kurį jis nukreipiamas, reikšmę.
Stebėkime šiuos veiksmus, kad panaikintume žymeklio nuorodą.
- Pirmiausia deklaruojame sveikąjį kintamąjį, į kurį nukreipia žymeklis.
int x =9;
- Dabar deklaruojame sveikojo skaičiaus rodyklės kintamąjį.
int *ptr;
- Po sveikojo skaičiaus žymeklio kintamojo deklaravimo, kintamojo 'x' adresą išsaugome rodyklės kintamajame 'ptr'.
ptr=&x;
- Galime pakeisti kintamojo „x“ reikšmę panaikindami nuorodą į rodyklę „ptr“, kaip nurodyta toliau:
*ptr =8;
Aukščiau pateiktoje eilutėje pakeičiama kintamojo „x“ reikšmė iš 9 į 8, nes „ptr“ nurodo „x“ vietą, o „ptr“ nuorodos panaikinimas, t. y. *ptr=8 atnaujins x reikšmę.
Sujunkite visus aukščiau nurodytus veiksmus:
#include int main() { int x=9; int *ptr; ptr=&x; *ptr=8; printf('value of x is : %d', x); return 0;}
Išvestis
Panagrinėkime kitą pavyzdį.
#include int main() { int x=4; int y; int *ptr; ptr=&x; y=*ptr; *ptr=5; printf('The value of x is : %d',x); printf(' The value of y is : %d',y); return 0; }
Aukščiau pateiktame kode:
- Mes deklaruojame du kintamuosius „x“ ir „y“, kur „x“ turi „4“ reikšmę.
- Mes deklaruojame rodyklės kintamąjį „ptr“.
- Po žymeklio kintamojo deklaravimo žymekliui 'ptr' priskiriame 'x' kintamojo adresą.
- Kaip žinome, kad „ptr“ yra „x“ kintamojo adresas, todėl „*ptr“ yra tas pats, kas „x“.
- „x“ reikšmę priskiriame „y“ naudodami kintamąjį „ptr“, ty y=* ptr užuot naudoję kintamąjį „x“.
Pastaba: Pasak mūsų, jei pakeisime „x“ reikšmę, „y“ reikšmė taip pat pasikeis, nes rodyklė „ptr“ turi „x“ kintamojo adresą. Tačiau tai neįvyksta, nes „y“ saugo vietinę vertės „5“ kopiją.
Išvestis
Panagrinėkime kitą scenarijų.
#include int main() { int a=90; int *ptr1,*ptr2; ptr1=&a; ptr2=&a; *ptr1=7; *ptr2=6; printf('The value of a is : %d',a); return 0; }
Aukščiau pateiktame kode:
- Pirmiausia deklaruojame „a“ kintamąjį.
- Tada deklaruojame dvi rodykles, ty ptr1 ir ptr2.
- Abiejose rodyklėse yra kintamojo „a“ adresas.
- *ptr1 priskiriame reikšmę „7“, o *ptr2 – „6“. Galutinė „a“ reikšmė būtų „6“.
Pastaba: jei turime daugiau nei vieną žymeklį, rodantį į tą pačią vietą, tai vieno žymeklio atliktas pakeitimas bus toks pat kaip ir kitos žymeklio.
Išvestis