logo

C pokazivač dereferencije

Kao što to već znamo 'što je pokazivač' , pokazivač je varijabla koja pohranjuje adresu druge varijable. Operator dereferenciranja također je poznat kao operator neizravnosti, koji je predstavljen sa (*). Kada se operator indirektnosti (*) koristi s varijablom pokazivača, tada je poznat kao dereferenciranje pokazivača. Kada dereferenciramo pokazivač, tada će se vratiti vrijednost varijable na koju pokazuje ovaj pokazivač.

Zašto koristimo pokazivač dereferenciranja?

Dereferenciranje pokazivača koristi se iz sljedećih razloga:

  • Može se koristiti za pristup ili manipuliranje podacima pohranjenim na memorijskoj lokaciji na koju pokazuje pokazivač.
  • Svaka operacija primijenjena na dereferencirani pokazivač izravno će utjecati na vrijednost varijable na koju pokazuje.

Promotrimo sljedeće korake za dereferenciranje pokazivača.

  • Prvo, deklariramo cjelobrojnu varijablu na koju pokazuje pokazivač.
 int x =9; 
  • Sada deklariramo varijablu pokazivača cijelog broja.
 int *ptr; 
  • Nakon deklaracije varijable pokazivača cijelog broja, pohranjujemo adresu varijable 'x' u varijablu pokazivača 'ptr'.
 ptr=&x; 
  • Možemo promijeniti vrijednost varijable 'x' dereferenciranjem pokazivača 'ptr' kao što je navedeno u nastavku:
 *ptr =8; 

Gornji redak mijenja vrijednost varijable 'x' s 9 na 8 jer 'ptr' pokazuje na lokaciju 'x' i dereferenciranje 'ptr', tj. *ptr=8 će ažurirati vrijednost x.

Kombinirajmo sve gore navedene korake:

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

Izlaz

C pokazivač dereferencije

Razmotrimo još jedan primjer.

Glumica Rubina Dilaik
 #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; } 

U gornjem kodu:

  • Deklariramo dvije varijable 'x' i 'y' gdje 'x' ima vrijednost '4'.
  • Deklariramo varijablu pokazivača 'ptr'.
  • Nakon deklaracije varijable pokazivača, dodjeljujemo adresu varijable 'x' pokazivaču 'ptr'.
  • Kako znamo da 'ptr' sadrži adresu varijable 'x', tako da je '*ptr' isto što i 'x'.
  • Vrijednost 'x' dodjeljujemo 'y' uz pomoć varijable 'ptr', tj. y=* ptr umjesto korištenja varijable 'x'.

Napomena: Prema nama, ako promijenimo vrijednost 'x', tada će se promijeniti i vrijednost 'y' jer pokazivač 'ptr' sadrži adresu varijable 'x'. Ali to se ne događa jer 'y' pohranjuje lokalnu kopiju vrijednosti '5'.

Izlaz

C pokazivač dereferencije

Razmotrimo drugi 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; } 

U gornjem kodu:

  • Prvo, deklariramo 'a' varijablu.
  • Zatim deklariramo dva pokazivača, tj. ptr1 i ptr2.
  • Oba pokazivača sadrže adresu varijable 'a'.
  • Vrijednost '7' dodjeljujemo *ptr1 i '6' *ptr2. Konačna vrijednost 'a' bila bi '6'.

Napomena: Ako imamo više od jednog pokazivača koji pokazuje na istu lokaciju, tada će promjena koju je napravio jedan pokazivač biti ista kao i promjena drugog pokazivača.

Izlaz

C pokazivač dereferencije