logo

Funkcje C++ – przekazywanie przez referencje

Istnieje kilka sposobów przesyłania danych (lub zmiennych) jako argumentu funkcji. Dwa z najpopularniejszych to przekazywanie przez wartość i przekazywanie przez referencję. Przekazywanie przez referencję pozwala funkcji modyfikować zmienną bez tworzenia kopii. Musimy zadeklarować zmienne referencyjne. Lokalizacja pamięci przekazanej zmiennej i parametru jest taka sama. Dlatego każda zmiana parametru odzwierciedla się również w zmiennej wewnątrz jej funkcji nadrzędnej. W tym artykule skupiono się na omówieniu sposobu przekazywania zmiennych przez referencję w C++.

Co to jest przekazanie przez referencje?

Kiedy zmienna jest przekazywana jako referencja do funkcji, adres zmiennej jest przechowywany w zmiennej wskaźnikowej wewnątrz funkcji. Zatem zmienna wewnątrz funkcji jest aliasem przekazywanej zmiennej. Dlatego wszelkie operacje wykonane na zmiennej wewnątrz funkcji zostaną również odzwierciedlone w funkcji wywołującej.



  • Ta zdolność do odzwierciedlania zmian może zwrócić więcej niż jedną wartość przez funkcję.
  • Ponadto funkcja void może technicznie zwracać wartości przy użyciu tej metody.

The & Operator (adres) oznacza wartości przekazywane w funkcji przez odwołanie. Poniżej znajduje się program C++ do implementacji przekazywania przez referencje:

C++








// C++ program to implement> // pass-by-reference> #include> using> namespace> std;> > void> f(>int> & x)> {> >x--;> }> > // Driver code> int> main()> {> >int> a = 5;> >cout << a << endl;> >f(a);> >cout << a << endl;> }>

>

C
>

Wyjście

5 4>

Wyjaśnienie:

  • Po pierwsze, funkcja jest definiowana z zwracanym typem danych void i przyjmuje wartość przez referencję (jak to oznaczono przez & znak adresu w parametrach formalnych).
  • Funkcja zmniejsza wartość swojego parametru formalnego o 1.
  • Następnie wewnątrz funkcji głównej zmienna całkowita o nazwie A jest inicjowany wartością 5.
  • Wartość „a” jest drukowana na konsoli. Wywoływana jest funkcja f(), a zmienna jest przekazywana jako argument.
  • Wewnątrz funkcji wartość zmiennej jest zmniejszana o 1.
  • Po powrocie z funkcji ponownie wyświetlana jest wartość zmiennej, która okazała się o 1 mniejsza od wartości pierwotnej.

Dlatego zmiany w zmiennej przekazywanej przez referencję do funkcji są odzwierciedlane w funkcji wywołującej.

Funkcja zamiany przy użyciu funkcji Pass-By-Reference

Funkcja swap zamienia wartości dwóch zmiennych otrzymanych jako argumenty. Poniżej znajduje się program C++ służący do zamiany wartości dwóch zmiennych przy użyciu przekazywania przez odwołanie.

C++




// C++ program to swap the values> // of two variables using> // pass-by-reference> #include> > // Prototype of the function> void> swap(>int> &,>int> &);> > // Driver code> int> main()> {> >int> x, y;> > >// Inputting two variables> >printf>(>'Enter the value of x and y '>);> >scanf>(>'%d%d'>, &x, &y);> > >// Displaying their values before swapping> >printf>(>'Before Swapping x = %d y = %d '>,> >x, y);> > >// Calling the function & sending variable> >// values as argument> >swap(x, y);> > >// Displaying their values after swapping> >printf>(>'After Swapping x = %d y = %d '>,> >x, y);> >return> 0;> }> > // Function uses pass by reference method> // to swap passed variable values> void> swap(>int> &a,>int> &b)> {> >int> temp;> > >temp = b;> >b = a;> >a = temp;> }>

>

>

Wyjście:

C++ — funkcja zamiany przy użyciu odwołania do przekazu

Wyjaśnienie:

  • Najpierw definiowany jest prototyp funkcji (opcjonalnie, jeśli funkcja jest zdefiniowana przed funkcją główną).
  • Wewnątrz funkcji głównej wartości obu zmiennych są pobierane od użytkownika.
  • Wartości przed wywołaniem funkcji wymiany są wypisywane na konsoli.
  • Następnie wartości są przekazywane jako argument do funkcji wymiany.
  • Funkcja zamiany wykorzystuje wywołanie przez odwołanie i zawiera kod do zamiany dwóch zmiennych.
  • Po zakończeniu funkcji wartość obu zmiennych jest wyświetlana w funkcji głównej (po wywołaniu funkcji swap).
  • Zamienione wartości zostaną wyświetlone na ekranie.

Przekaż referencje za pomocą wskaźników

Możliwe jest także przekazanie adresu zmiennej z funkcji wywołującej i użycie ich jako wskaźnika wewnątrz wywoływanej funkcji. Pozwala to nieco wyraźniej zmieniać wartości zmiennych w funkcji.

Poniżej znajduje się program C++ implementujący przekazywanie przez referencje ze wskaźnikami:

C++




// C++ program to implement> // pass-by-reference with> // pointers> #include> using> namespace> std;> > void> f(>int> *x)> {> >*x = *x - 1;> }> > // Driver code> int> main()> {> >int> a = 5;> >cout << a << endl;> >f(&a);> >cout << a << endl;> }>

ważny

>

>

Wyjście

5 4>

Wyjaśnienie:

  • Po pierwsze, funkcja jest definiowana z zwracanym typem danych void i przyjmuje wartość jako wskaźniki (co jest oznaczone przez * gwiazdka wpisać parametry formalne).
  • Funkcja zmniejsza wartość swojego parametru formalnego o 1.
  • Następnie wewnątrz funkcji głównej zmienna całkowita o nazwie „a” jest inicjowana wartością 5.
  • Następnie wyświetlana jest ta wartość. Funkcja jest wywoływana, a adres zmiennej jest przekazywany jako argument.
  • Wewnątrz funkcji wartość zmiennej wskaźnikowej jest zmniejszana o 1.
  • Po powrocie z funkcji ponownie wyświetlana jest wartość zmiennej, która okazała się o 1 mniejsza od wartości pierwotnej.