Menu
Coddy logo textTech

Przekazywanie przez wartość

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

Gdy przekazujesz zmienną do funkcji w C, funkcja otrzymuje kopię wartości tej zmiennej, a nie samą zmienną. Ta podstawowa koncepcja nazywa się przekazywaniem przez wartość.

Oto, co się dzieje: jeśli masz zmienną x o wartości 10 i przekazujesz ją do funkcji, funkcja otrzymuje własną, oddzielną kopię tej wartości. Żadne zmiany wprowadzane przez funkcję w tej kopii nie wpływają na pierwotną zmienną w funkcji wywołującej.

void tryToChange(int num) {
    num = 99;  // To zmienia tylko kopię
}

int main() {
    int x = 10;
    tryToChange(x);
    // x nadal ma wartość 10, a nie 99
    return 0;
}

To zachowanie chroni Twoje oryginalne dane przed przypadkową modyfikacją przez funkcje. Oznacza to jednak również, że jeśli chcesz, aby funkcja rzeczywiście zmieniła wartość zmiennej, przekazywanie przez wartość nie zadziała. Zrozumienie tego ograniczenia jest kluczowe, gdy przejdziesz do nauki wskaźników i dowiesz się, jak mogą rozwiązać ten problem.

challenge icon

Wyzwanie

Łatwy

Napisz program w C, który demonstruje koncepcję przekazywania przez wartość, podejmując próbę zmodyfikowania zmiennej wewnątrz funkcji i sprawdzając, czy pierwotna zmienna pozostaje niezmieniona.

Twój program powinien:

  1. Utworzyć funkcję o nazwie tryToModify, która przyjmuje parametr całkowity o nazwie number
  2. Wewnątrz funkcji tryToModify dodać 50 do parametru number
  3. Wewnątrz funkcji tryToModify wypisać zmodyfikowaną wartość w formacie: Inside function: [value]
  4. W funkcji main zadeklarować zmienną całkowitą o nazwie original i zainicjalizować ją wartością 25
  5. Wypisać pierwotną wartość przed wywołaniem funkcji w formacie: Before function call: [value]
  6. Wywołać funkcję tryToModify i przekazać zmienną original jako argument
  7. Po wywołaniu funkcji ponownie wypisać wartość original w formacie: After function call: [value]

Wynik powinien pokazywać, że wartość pierwotnej zmiennej pozostaje niezmieniona pomimo modyfikacji dokonanej wewnątrz funkcji:

Before function call: 25
Inside function: 75
After function call: 25

To wyzwanie demonstruje podstawową koncepcję przekazywania przez wartość w C, gdzie funkcje otrzymują kopie zmiennych, a nie same zmienne. Wszelkie modyfikacje parametru dokonane wewnątrz funkcji nie wpływają na pierwotną zmienną w funkcji wywołującej.

Spróbuj swoich sił

#include <stdio.h>

// TODO: Napisz tutaj funkcję tryToModify

int main() {
    // TODO: Napisz tutaj swój kod
    // 1. Zadeklaruj i zainicjalizuj oryginalną zmienną
    // 2. Wypisz wartość przed wywołaniem funkcji
    // 3. Wywołaj funkcję tryToModify
    // 4. Wypisz wartość po wywołaniu funkcji
    
    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