logo

C novirzes rādītājs

Kā mēs to jau zinām 'kas ir rādītājs' , rādītājs ir mainīgais, kas saglabā cita mainīgā adresi. Atsauces operators ir pazīstams arī kā novirzīšanas operators, ko attēlo (*). Ja netiešā operatora (*) tiek izmantots ar rādītāja mainīgo, tad tas ir pazīstams kā norādes atcelšana. Atsaucot uz rādītāju, tiks atgriezta šī rādītāja norādītā mainīgā vērtība.

java masīvu sarakstu šķirošana

Kāpēc mēs izmantojam novirzīšanas rādītāju?

Rādītāja atsauces atcelšana tiek izmantota šādu iemeslu dēļ:

  • To var izmantot, lai piekļūtu datiem, kas saglabāti atmiņas vietā, uz kuru norāda rādītājs, vai ar tiem manipulēt.
  • Jebkura darbība, kas tiek lietota rādītājam, kuram nav atsauces, tieši ietekmēs tā mainīgā vērtību, uz kuru tas norāda.

Ievērosim tālāk norādītās darbības, lai atsauktu rādītāju.

  • Pirmkārt, mēs deklarējam veselo skaitļu mainīgo, uz kuru norāda rādītājs.
 int x =9; 
  • Tagad mēs deklarējam vesela skaitļa rādītāja mainīgo.
 int *ptr; 
  • Pēc vesela skaitļa rādītāja mainīgā deklarēšanas mēs saglabājam mainīgā 'x' adresi rādītāja mainīgajam 'ptr'.
 ptr=&x; 
  • Mēs varam mainīt mainīgā “x” vērtību, atceļot rādītāju “ptr”, kā norādīts tālāk:
 *ptr =8; 

Iepriekš minētajā rindā tiek mainīta mainīgā “x” vērtība no 9 uz 8, jo “ptr” norāda uz “x” atrašanās vietu un “ptr” atsauces atcelšana, t.i., *ptr=8 atjauninās x vērtību.

Apvienosim visas iepriekš minētās darbības:

 #include int main() { int x=9; int *ptr; ptr=&x; *ptr=8; printf('value of x is : %d', x); return 0;} 

Izvade

C novirzes rādītājs

Apskatīsim citu piemēru.

 #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; } 

Iepriekš minētajā kodā:

  • Mēs deklarējam divus mainīgos 'x' un 'y', kur 'x' ir vērtība '4'.
  • Mēs deklarējam rādītāja mainīgo 'ptr'.
  • Pēc rādītāja mainīgā deklarēšanas rādītājam 'ptr' piešķiram mainīgā 'x' adresi.
  • Kā mēs zinām, ka “ptr” satur mainīgā “x” adresi, tāpēc “*ptr” ir tāds pats kā “x”.
  • Mēs piešķiram 'x' vērtību 'y' ar mainīgā 'ptr' palīdzību, t.i., y=* ptr tā vietā, lai izmantotu mainīgo “x”.

Piezīme. Saskaņā ar mūsu teikto, ja mainīsim “x” vērtību, tiks mainīta arī “y” vērtība, jo rādītājam “ptr” ir mainīgā “x” adrese. Bet tas nenotiek, jo “y” saglabā vērtības “5” vietējo kopiju.

Izvade

C novirzes rādītājs

Apskatīsim citu scenāriju.

 #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; } 

Iepriekš minētajā kodā:

  • Pirmkārt, mēs deklarējam 'a' mainīgo.
  • Tad mēs deklarējam divus rādītājus, t.i., ptr1 un ptr2.
  • Abās norādes ir mainīgā 'a' adrese.
  • Mēs piešķiram vērtību '7' *ptr1 un '6' *ptr2. “a” galīgā vērtība būtu “6”.

Piezīme. Ja mums ir vairāk nekā viens rādītājs, kas norāda uz vienu un to pašu vietu, viena rādītāja veiktās izmaiņas būs tādas pašas kā cita rādītāja.

Izvade

C novirzes rādītājs