logo

Ц дереферентни показивач

Као што то већ знамо 'шта је показивач' , показивач је променљива која чува адресу друге променљиве. Оператор дереференцирања је такође познат као индиректни оператор, који је представљен са (*). Када се индиректни оператор (*) користи са променљивом показивача, тада је познат као дереференцирање показивача. Када дереференцирамо показивач, тада ће бити враћена вредност променљиве на коју указује овај показивач.

Зашто користимо показивач дереференцирања?

Дереференцирање показивача се користи из следећих разлога:

  • Може се користити за приступ или манипулацију подацима ускладиштеним на меморијској локацији на коју показује показивач.
  • Свака операција примењена на дереференцирани показивач директно ће утицати на вредност променљиве на коју указује.

Хајде да посматрамо следеће кораке за дереференцирање показивача.

  • Прво, декларишемо целобројну променљиву на коју показује показивач.
 int x =9; 
  • Сада декларишемо променљиву целобројног показивача.
 int *ptr; 
  • Након декларације целобројне променљиве показивача, смештамо адресу променљиве 'к' у променљиву показивача 'птр'.
 ptr=&x; 
  • Можемо променити вредност променљиве 'к' дереференцирањем показивача 'птр' као што је дато у наставку:
 *ptr =8; 

Горњи ред мења вредност променљиве 'к' са 9 на 8 јер 'птр' указује на локацију 'к' и дереференцирање 'птр', тј. *птр=8 ће ажурирати вредност к.

бесконачна петља

Хајде да комбинујемо све горе наведене кораке:

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

Излаз

Ц дереферентни показивач

Хајде да размотримо још један пример.

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

У горњем коду:

  • Декларишемо две променљиве 'к' и 'и' где 'к' држи вредност '4'.
  • Променљиву показивача декларишемо 'птр'.
  • Након декларације променљиве показивача, додељујемо адресу променљиве 'к' показивачу 'птр'.
  • Као што знамо да 'птр' садржи адресу 'к' променљиве, тако да је '*птр' исто што и 'к'.
  • Вредност 'к' додељујемо 'и' уз помоћ променљиве 'птр', тј. и=* птр уместо да користите променљиву 'к'.

Напомена: Према нама, ако променимо вредност 'к', онда ће се и вредност 'и' такође променити пошто показивач 'птр' садржи адресу променљиве 'к'. Али то се не дешава, пошто 'и' чува локалну копију вредности '5'.

Излаз

Ц дереферентни показивач

Хајде да размотримо други сценарио.

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

У горњем коду:

  • Прво, декларишемо 'а' променљиву.
  • Затим декларишемо два показивача, тј. птр1 и птр2.
  • Оба показивача садрже адресу 'а' променљиве.
  • Додељујемо вредност '7' *птр1 и '6' *птр2. Коначна вредност 'а' би била '6'.

Напомена: Ако имамо више од једног показивача који показује на исту локацију, онда ће промена коју је направио један показивач бити иста као и други показивач.

Излаз

Ц дереферентни показивач