Menu
Coddy logo textTech

Przekazywanie wskaźników do funkcji

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

Teraz, gdy znasz ograniczenia przekazywania przez wartość, przyjrzyjmy się, jak przekazywanie wskaźników do funkcji rozwiązuje ten problem. Zamiast przekazywać kopię wartości zmiennej, możesz przekazać funkcji adres pamięci tej zmiennej.

Gdy przekazujesz wskaźnik do funkcji, funkcja uzyskuje dostęp do miejsca w pamięci, w którym znajduje się oryginalna zmienna. Oznacza to, że funkcja może pracować bezpośrednio na oryginalnych danych, a nie tylko na ich kopii.

void processValue(int *ptr) {
    // ptr przechowuje adres oryginalnej zmiennej
    // Funkcja może teraz uzyskać dostęp do tego miejsca w pamięci
}

int main() {
    int x = 10;
    processValue(&x);  // Przekaż adres x
    return 0;
}

Zwróć uwagę, że podczas wywoływania funkcji używamy operatora pobrania adresu &, aby przekazać adres zmiennej. Parametr funkcji jest zadeklarowany jako int *ptr, co oznacza, że funkcja oczekuje wskaźnika na liczbę całkowitą. Ta podstawowa technika otwiera potężne możliwości interakcji funkcji z danymi Twojego programu.

challenge icon

Wyzwanie

Łatwy

Napisz program w C, który demonstruje przekazywanie wskaźników do funkcji. Twój program powinien:

  1. Utworzyć funkcję o nazwie displayValue, która przyjmuje wskaźnik do liczby całkowitej jako parametr
  2. Wewnątrz funkcji displayValue użyć operatora dereferencji, aby uzyskać dostęp do wartości pod adresem pamięci i ją wypisać w formacie: Value at address: [value]
  3. W funkcji main zadeklarować zmienną całkowitą o nazwie number i zainicjalizować ją wartością 42
  4. Wypisać pierwotną wartość w formacie: Original value: [value]
  5. Wywołać funkcję displayValue i przekazać adres zmiennej number za pomocą operatora pobrania adresu
  6. Po wywołaniu funkcji wypisać komunikat potwierdzający: Function call completed

Wynik powinien pokazać, że funkcja pomyślnie otrzymuje adres pamięci pierwotnej zmiennej i uzyskuje do niego dostęp:

Original value: 42
Value at address: 42
Function call completed

To wyzwanie wprowadza podstawową koncepcję przekazywania wskaźników do funkcji, dzięki czemu funkcja może uzyskać dostęp do lokalizacji pamięci pierwotnej zmiennej, zamiast pracować z jej kopią.

Spróbuj swoich sił

#include <stdio.h>

// TODO: Napisz tutaj swoją funkcję displayValue

int main() {
    // TODO: Napisz tutaj swój kod
    // 1. Zadeklaruj i zainicjalizuj zmienną number
    // 2. Wyświetl pierwotną wartość
    // 3. Wywołaj funkcję displayValue
    // 4. Wyświetl komunikat o zakończeniu
    
    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