Menu
Coddy logo textTech

Operator dereferencji (*)

Część sekcji Logika i sterowanie przepływem ścieżki C w Coddy. Lekcja 4 z 63.

Teraz, gdy wiesz, jak przechowywać adresy w wskaźnikach, musisz nauczyć się uzyskiwać dostęp do rzeczywistej wartości przechowywanej pod tym adresem pamięci. Operator dereferencji (*) pozwala „podążać” za wskaźnikiem, aby uzyskać wartość, na którą wskazuje.

Gdy umieścisz operator * przed zmienną wskaźnikową, uzyskasz dostęp do wartości przechowywanej pod adresem pamięci, który zawiera wskaźnik. Pomyśl o tym jak o poleceniu: „pokaż mi, co znajduje się w pokoju pod tym adresem”.

int age = 25;
int *ptr = &age;
printf("%d", *ptr);    // Wypisuje 25 - wartość age

Ważne jest, aby zrozumieć, że gwiazdka (*) ma w języku C dwa różne znaczenia. Podczas deklarowania wskaźnika, na przykład int *ptr;, gwiazdka wskazuje, że ptr jest wskaźnikiem. Użyta z istniejącym wskaźnikiem, na przykład *ptr, dereferencjonuje wskaźnik, aby uzyskać dostęp do wartości, na którą wskazuje.

Operator dereferencji jest niezbędny, ponieważ zamyka cykl wskaźnika: możesz zapisać adres we wskaźniku za pomocą &, a następnie pobrać wartość spod tego adresu za pomocą *. Pozwala to pośrednio uzyskiwać dostęp do zmiennych i modyfikować je za pomocą ich adresów w pamięci.

challenge icon

Wyzwanie

Łatwy

Napisz program w C, który demonstruje pełny proces pracy ze wskaźnikami: deklarowanie, przypisywanie adresów i dereferencję. Twój program powinien:

  1. Zadeklarować zmienną całkowitą o nazwie value i zainicjalizować ją wartością 75
  2. Zadeklarować zmienną typu float o nazwie price i zainicjalizować ją wartością 19.99
  3. Zadeklarować wskaźnik do liczby całkowitej o nazwie value_ptr
  4. Zadeklarować wskaźnik do liczby typu float o nazwie price_ptr
  5. Użyć operatora pobrania adresu, aby przypisać adres value do value_ptr
  6. Użyć operatora pobrania adresu, aby przypisać adres price do price_ptr
  7. Użyć operatora dereferencji, aby wypisać wartość value za pośrednictwem value_ptr
  8. Użyć operatora dereferencji, aby wypisać wartość price za pośrednictwem price_ptr z dokładnością do 2 miejsc po przecinku

Wynik powinien wyświetlać wartości uzyskane przez dereferencję w następującym formacie:

Value through pointer: 75
Price through pointer: 19.99

To wyzwanie sprawdza, czy rozumiesz, jak operator dereferencji odczytuje pierwotną wartość zmiennej, korzystając z adresu zapisanego we wskaźniku.

Spróbuj swoich sił

#include <stdio.h>

int main() {
    // TODO: Napisz tutaj swój kod
    // 1. Zadeklaruj i zainicjalizuj zmienne
    // 2. Zadeklaruj wskaźniki
    // 3. Przypisz adresy do wskaźników
    // 4. Wypisz wartości uzyskane przez dereferencję wskaźników
    
    return 0;
}
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Logika i sterowanie przepływem

Poćwicz samodzielnie: Kompilator C online