logo

Wskaźnik dereferencji C

Jak już to wiemy „co to jest wskaźnik” , wskaźnik jest zmienną przechowującą adres innej zmiennej. Operator dereferencji jest również znany jako operator pośredni, który jest reprezentowany przez (*). Kiedy operator pośredni (*) jest używany ze zmienną wskaźnikową, jest to tzw wyłuskiwanie wskaźnika. Gdy wyłuskamy wskaźnik, wówczas zwrócona zostanie wartość zmiennej wskazywanej przez ten wskaźnik.

Dlaczego używamy wskaźnika dereferencji?

Dereferencja wskaźnika jest używana z następujących powodów:

jeśli jeszcze, jeśli jeszcze Java
  • Można go używać do uzyskiwania dostępu do danych przechowywanych w lokalizacji pamięci wskazanej przez wskaźnik lub manipulowania nimi.
  • Każda operacja zastosowana do wyłuskanego wskaźnika będzie miała bezpośredni wpływ na wartość zmiennej, na którą wskazuje.

Wykonajmy następujące kroki, aby wyłuskać wskaźnik.

  • Najpierw deklarujemy zmienną całkowitą, na którą wskazuje wskaźnik.
 int x =9; 
  • Teraz deklarujemy zmienną wskaźnikową typu całkowitego.
 int *ptr; 
  • Po zadeklarowaniu zmiennej wskaźnikowej typu całkowitego, przechowujemy adres zmiennej „x” w zmiennej wskaźnikowej „ptr”.
 ptr=&x; 
  • Możemy zmienić wartość zmiennej „x” poprzez wyłuskanie wskaźnika „ptr”, jak podano poniżej:
 *ptr =8; 

Powyższa linia zmienia wartość zmiennej „x” z 9 na 8, ponieważ „ptr” wskazuje lokalizację „x”, a wyłuskanie „ptr”, tj. *ptr=8 zaktualizuje wartość x.

Połączmy wszystkie powyższe kroki:

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

Wyjście

Wskaźnik dereferencji C

Rozważmy inny przykład.

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

W powyższym kodzie:

  • Deklarujemy dwie zmienne „x” i „y”, gdzie „x” przechowuje wartość „4”.
  • Deklarujemy zmienną wskaźnikową „ptr”.
  • Po deklaracji zmiennej wskaźnikowej przypisujemy adres zmiennej „x” do wskaźnika „ptr”.
  • Jak wiemy, że „ptr” zawiera adres zmiennej „x”, więc „*ptr” jest tym samym, co „x”.
  • Wartość „x” przypisujemy „y” za pomocą zmiennej „ptr”, czyli y=* pt zamiast używać zmiennej „x”.

Uwaga: Według nas, jeśli zmienimy wartość „x”, wówczas wartość „y” również ulegnie zmianie, ponieważ wskaźnik „ptr” przechowuje adres zmiennej „x”. Ale tak się nie dzieje, ponieważ „y” przechowuje lokalną kopię wartości „5”.

Wyjście

Wskaźnik dereferencji C

Rozważmy inny scenariusz.

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

W powyższym kodzie:

10 ml na uncje
  • Najpierw deklarujemy zmienną „a”.
  • Następnie deklarujemy dwa wskaźniki, tj. ptr1 i ptr2.
  • Obydwa wskaźniki zawierają adres zmiennej „a”.
  • Przypisujemy wartość „7” do *ptr1 i „6” do *ptr2. Ostateczna wartość „a” będzie wynosić „6”.

Uwaga: Jeśli mamy więcej niż jeden wskaźnik wskazujący tę samą lokalizację, wówczas zmiana dokonana przez jeden wskaźnik będzie taka sama, jak zmiana dokonana przez inny wskaźnik.

Wyjście

Wskaźnik dereferencji C