Menu
Coddy logo textTech

Modyfikowanie zmiennych za pomocą wskaźników

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

Teraz możesz wykorzystać prawdziwą moc wskaźników: modyfikowanie oryginalnej zmiennej za pomocą funkcji. Gdy przekazujesz wskaźnik do funkcji, funkcja może użyć operatora dereferencji, aby zmienić wartość przechowywaną pod tym adresem pamięci.

Wewnątrz funkcji dereferencjonujesz wskaźnik za pomocą operatora *, aby uzyskać dostęp do wartości oryginalnej zmiennej i ją zmodyfikować. Ta technika nazywa się przekazywaniem przez referencję, ponieważ przekazujesz referencję do lokalizacji zmiennej w pamięci.

void doubleValue(int *ptr) {
    *ptr = *ptr * 2;  // Użyj dereferencji, aby zmodyfikować pierwotną wartość
}

int main() {
    int x = 5;
    doubleValue(&x);  // Przekaż adres x
    // x ma teraz wartość 10!
    return 0;
}

Kluczowe jest użycie *ptr po lewej stronie przypisania, aby zmienić wartość pod adresem pamięci przechowywanym przez wskaźnik. Dzięki temu funkcje mogą trwale zmieniać zmienne z funkcji wywołującej, co otwiera potężne możliwości programowania, których przekazywanie przez wartość po prostu nie zapewnia.

challenge icon

Wyzwanie

Łatwy

Napisz program w C, który demonstruje modyfikowanie zmiennych za pomocą wskaźników, tworząc funkcję potrajającą wartość liczby całkowitej.

Twój program powinien:

  1. Utworzyć funkcję o nazwie tripleValue, która przyjmuje wskaźnik do liczby całkowitej jako parametr
  2. Wewnątrz funkcji tripleValue użyć operatora dereferencji, aby pomnożyć przez 3 wartość znajdującą się pod danym adresem pamięci
  3. Wewnątrz funkcji tripleValue wypisać nową wartość w formacie: Value tripled to: [value]
  4. W funkcji main zadeklarować zmienną całkowitą o nazwie number i zainicjalizować ją wartością 8
  5. Wypisać pierwotną wartość w formacie: Original value: [value]
  6. Wywołać funkcję tripleValue i przekazać jej adres zmiennej number za pomocą operatora pobrania adresu
  7. Po wywołaniu funkcji wypisać końcową wartość zmiennej number w formacie: Final value: [value]

Wynik powinien pokazywać, że funkcja skutecznie modyfikuje pierwotną zmienną za pomocą wskaźnika:

Original value: 8
Value tripled to: 24
Final value: 24

To wyzwanie pokazuje, jak potężne jest przekazywanie przez referencję za pomocą wskaźników: funkcja może trwale zmodyfikować pierwotną zmienną, dereferując wskaźnik i zmieniając wartość w danej lokalizacji pamięci.

Spróbuj swoich sił

#include <stdio.h>

// TODO: Napisz tutaj funkcję tripleValue

int main() {
    // TODO: Napisz tutaj swój kod
    // Zadeklaruj i zainicjalizuj zmienną number
    // Wypisz wartość początkową
    // Wywołaj funkcję tripleValue
    // Wypisz wartość końcową
    
    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