Witam was serdecznie w kolejnym artykule poświęconym przekazywaniu argumentów do funkcji. Dzisiaj opowiem o przekazywaniu argumentów do funkcji przez referencje.
Na początku jak zwykle tworzymy jakieś zmienne i funkcje do której będziemy przekazywali argumenty przez referencje.
Na początek utworzymy sobie trzy zmienne: dlugosc, szerokosc i wysokosc i przypiszemy do nich wartości.
int dlugosc = 10;
int szerokosc = 20;
int wysokosc = 30;
Teraz utworzymy funkcje, do której będziemy przekazywać argumenty. Analogicznie jak przy ćwiczeniach z przekazywania argumentów przez wskaźniki utworzymy funkcję o nazwie podwoj_wymiary, która będzie miała za zadanie podwojenie wartości naszych zmiennych. W ciele funkcji od razu utworzymy kod, który ma za zadanie podwojenie wartości naszych zmiennych.
void podwoj_wymiary(int &dl, int &szer, int &wys)
{
dl = dl * 2;
szer = szer * 2;
wys = wys * 2;
}
Oczywiście od razu słowo komentarza dotyczącego utworzonej funkcji. Na początku słówko void mówi nam tyle, że nasza funkcja nie zwraca żadnej wartości. Następnie nazwa funkcji podwoj_wymiary i nawiasy w których definiujemy argumenty funkcji. Zwróć uwagę że zdefiniowaliśmy trzy argumenty. Określiliśmy ich typy ale przed każdym z nich znajduje się znak &, który mówi o tym że argumenty te będą przekazywane przez referencje.
Teraz zostało nam wrócić do funkcji głównej, wywołać funkcje i podać jej argumenty.
podwoj_wymiery(dlugosc, szerokosc, wysokosc);
Na koniec w celu obejrzenia efektów działania funkcji dodajmy sobie linie i wyświetlmy wartości wszystkich trzech zmiennych.
cout << "Dlugosc : " << dlugosc << ", szerokosc : " << szerokosc << ", wysokosc : " << wysokosc << endl;
Na samym końcu dodajemy sobie linie instrukcją
getch();
żeby zatrzymać na chwilę program i zobaczyć efekt końcowy uruchomienia. Pamiętaj że aby instrukcja getch() zadziałała na początku musimy dodać bibliotekę conio.h.
W tym momencie nasz cały kod wygląda następująco.
Listing
#include <iostream>
#include <conio.h>
using namespace std;
void podwoj_wymiary(int &dl, int &szer, int &wys)
{
dl = dl * 2;
szer = szer * 2;
wys = wys * 2;
}
int main()
{
int dlugosc = 10;
int szerokosc = 20;
int wysokosc = 30;
podwoj_wymiary(dlugosc, szerokosc, wysokosc);
cout << "Dlugosc : " << dlugosc << ", szerokosc : " << szerokosc << ", wysokosc : " << wysokosc << endl;
getch();
return 0;
}
Uruchamiamy program i wynikiem jego działania jest poniższa linia.
Dlugosc : 20, szerokosc : 40, wysokosc : 60
Widzisz więc, że dzięki przekazaniu argumentów przez referencje otrzymaliśmy dostęp do tych zmiennych a w instrukcjami w ciele funkcji zmieniliśmy ich wartości.
Żeby lepiej zobrazować co się stało, przed wywołaniem funkcji podwoj_wymiary wyświetlmy sobie adresy wszystkich zmiennych.
cout << "Adres zm. dlugosc : " << &dlugosc << ", adres zm. szerokosc : " << &szerokosc << ", adres zm. wysokosc : " << &wysokosc << endl;
efektem wykonania tej linii będzie
Adres zm. dlugosc : 0x61fe1c, adres zm. szerokosc : 0x61fe18, adres zm. wysokosc : 0x61fe14
I analogicznie wewnątrz funkcji podwoj_wymiary wyświetlmy sobie adresy zmiennych zdefiniowanych w funkcji.
cout << "Adres dl : " << &dl << ", adres zm. szer : " << &szer << ", adres zm. wys : " << &wys << endl;
efektem wykonania powyższej linii będzie
Adres dl : 0x61fe1c, adres zm. szer : 0x61fe18, adres zm. wys : 0x61fe14
Oczywiście u Ciebie adresy które się wyświetlają będą inne, natomiast zwróć uwagę że adres zmiennej dlugosc równa się adresowi zmiennej dl, adres zmiennej szerokosc równa się adresowi zmiennej szer, a adres zmiennej wysokosc równa się adresowi zmiennej wys. Oznacza to tyle, że dzięki referencji otrzymaliśmy dostęp do oryginalnych zmiennych dlugosc, szerokosc i wysokosc. Zauważ że zmieniając wartości zmiennych dl, szer i wys w funkcji podwoj_wymiary zmieniasz tak naprawdę wartości zmiennych dlugosc, szerokosc i wysokosc.
Mam nadzieję że po tym przykładzie bez problemu będziesz w stanie przekazywać do funkcji argumenty przez referencje. Oczywiście zachęcam do ćwiczeń, bo tylko w taki sposób szybko utrwalisz zdobytą wiedzę. Kolejne artykuły w przygotowaniu także "do zobaczenia".
Poniżej link do kodu z tego odcinka: