Menu
Coddy logo textTech

Przekazywanie przez referencję

Część sekcji Logika i przepływ programu ścieżki C++ w Coddy. Lekcja 41 z 56.

Gdy przekazujesz argumenty do funkcji, C++ zwykle tworzy kopie wartości. Oznacza to, że zmiany wewnątrz funkcji nie wpływają na oryginalne zmienne. Przekazywanie przez referencję zmienia to zachowanie, umożliwiając funkcjom bezpośrednią pracę na oryginalnych zmiennych.

Aby przekazywać przez referencję, dodaj symbol & po typie parametru w deklaracji funkcji:

void doubleValue(int& number) {
    number = number * 2;  // Modyfikuje oryginalną zmienną
}

Gdy wywołasz tę funkcję, wszelkie zmiany wprowadzone w parametrze wewnątrz funkcji bezpośrednio zmodyfikują oryginalną zmienną, która została przekazana. Jest to szczególnie przydatne, gdy chcesz, aby funkcja modyfikowała swoje argumenty, lub gdy pracujesz z dużymi obiektami, których kopiowanie byłoby nieefektywne.

Przekazywanie przez referencję eliminuje narzut związany z kopiowaniem danych, dzięki czemu programy działają szybciej i efektywniej wykorzystują pamięć, zwłaszcza w przypadku złożonych struktur danych, takich jak wektory czy mapy.

challenge icon

Wyzwanie

Łatwy

Utwórz funkcję, która demonstruje przekazywanie przez referencję, modyfikując zmienne bezpośrednio za pomocą parametrów funkcji. To wyzwanie sprawdzi, czy rozumiesz, jak symbol & pozwala funkcjom pracować na oryginalnych zmiennych zamiast na ich kopiach.

Podane zostaną następujące dane wejściowe:

  • Liczba całkowita value1 reprezentująca pierwszą liczbę
  • Liczba całkowita value2 reprezentująca drugą liczbę
  • Liczba całkowita value3 reprezentująca trzecią liczbę

Twój program powinien:

  1. Utworzyć funkcję o nazwie tripleValues, która przyjmuje trzy parametry typu całkowitego przez referencję
  2. Wewnątrz funkcji pomnożyć każdy parametr przez 3
  3. W funkcji main odczytać trzy wartości wejściowe i zapisać je w zmiennych
  4. Wypisać oryginalne wartości przed wywołaniem funkcji
  5. Wywołać funkcję tripleValues z użyciem trzech zmiennych
  6. Wypisać zmodyfikowane wartości po wywołaniu funkcji, aby pokazać, że zostały zmienione

Użyj dokładnie następującego formatu wyjściowego:

Przed wywołaniem funkcji:

Original values: [value1] [value2] [value3]

Po wywołaniu funkcji:

Tripled values: [new_value1] [new_value2] [new_value3]

Sygnatura funkcji powinna używać symbolu & po typie każdego parametru, aby wskazać przekazywanie przez referencję: void tripleValues(int& a, int& b, int& c). Dzięki temu funkcja może bezpośrednio modyfikować przekazane do niej oryginalne zmienne, demonstrując kluczową różnicę między przekazywaniem przez wartość a przekazywaniem przez referencję. Zmienne w funkcji main zostaną trwale zmienione po wywołaniu funkcji, co dowodzi, że funkcja działała na oryginalnych lokalizacjach pamięci, a nie na kopiach.

Spróbuj swoich sił

#include <iostream>
using namespace std;

// TODO: Utwórz tutaj funkcję tripleValues

int main() {
    // Wczytaj wartości wejściowe
    int value1, value2, value3;
    cin >> value1 >> value2 >> value3;
    
    // Wyświetl pierwotne wartości
    cout << "Original values: " << value1 << " " << value2 << " " << value3 << endl;
    
    // TODO: Wywołaj tutaj funkcję tripleValues
    
    // Wyświetl zmodyfikowane wartości
    cout << "Tripled values: " << value1 << " " << value2 << " " << value3 << endl;
    
    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 przepływ programu

Poćwicz samodzielnie: Kompilator C++ online