logo

C dereference ukazatel

Jak už to víme 'co je ukazatel' , ukazatel je proměnná, která ukládá adresu jiné proměnné. Operátor dereference je také známý jako nepřímý operátor, který je reprezentován (*). Když je s proměnnou ukazatele použit nepřímý operátor (*), pak se nazývá dereferencování ukazatele. Když dereferencujeme ukazatel, vrátí se hodnota proměnné, na kterou ukazuje tento ukazatel.

Proč používáme ukazatel dereferencování?

Dereference ukazatele se používá z následujících důvodů:

  • Lze jej použít pro přístup nebo manipulaci s daty uloženými v místě paměti, na které ukazuje ukazatel.
  • Jakákoli operace použitá na dereferencovaný ukazatel přímo ovlivní hodnotu proměnné, na kterou ukazuje.

Podívejme se na následující kroky k dereferenci ukazatele.

  • Nejprve deklarujeme celočíselnou proměnnou, na kterou ukazuje ukazatel.
 int x =9; 
  • Nyní deklarujeme proměnnou celočíselného ukazatele.
 int *ptr; 
  • Po deklaraci celočíselné proměnné ukazatele uložíme adresu proměnné 'x' do proměnné ukazatele 'ptr'.
 ptr=&x; 
  • Hodnotu proměnné „x“ můžeme změnit dereferencováním ukazatele „ptr“, jak je uvedeno níže:
 *ptr =8; 

Výše uvedený řádek mění hodnotu proměnné 'x' z 9 na 8, protože 'ptr' ukazuje na umístění 'x' a dereferencování 'ptr', tj. *ptr=8 aktualizuje hodnotu x.

Pojďme spojit všechny výše uvedené kroky:

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

Výstup

C dereference ukazatel

Podívejme se na další příklad.

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

Ve výše uvedeném kódu:

  • Deklarujeme dvě proměnné 'x' a 'y', kde 'x' má hodnotu '4'.
  • Deklarujeme proměnnou ukazatele 'ptr'.
  • Po deklaraci ukazatelové proměnné přiřadíme adresu proměnné 'x' ukazateli 'ptr'.
  • Protože víme, že 'ptr' obsahuje adresu proměnné 'x', takže '*ptr' je totéž jako 'x'.
  • Hodnotu „x“ přiřadíme „y“ pomocí proměnné „ptr“, tj. y=* ptr místo použití proměnné 'x'.

Poznámka: Podle nás, pokud změníme hodnotu 'x', změní se i hodnota 'y', protože ukazatel 'ptr' obsahuje adresu proměnné 'x'. To se však nestane, protože 'y' ukládá místní kopii hodnoty '5'.

Výstup

C dereference ukazatel

Zvažme jiný scénář.

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

Ve výše uvedeném kódu:

  • Nejprve deklarujeme proměnnou 'a'.
  • Poté deklarujeme dva ukazatele, tj. ptr1 a ptr2.
  • Oba ukazatele obsahují adresu proměnné 'a'.
  • Hodnotu '7' přiřadíme *ptr1 a '6' *ptr2. Konečná hodnota 'a' by byla '6'.

Poznámka: Pokud máme více než jeden ukazatel ukazující na stejné místo, pak změna provedená jedním ukazatelem bude stejná jako u jiného ukazatele.

Výstup

C dereference ukazatel