nul"); return 0; } Przekazywanie argumentów przez referencję W funkcji tworzymy dowolną ilość argumentów wraz z typami. Nazwy argumentów poprzedzone są ampersandem (&). Zmienne wewnątrz funkcji nie są kopią, oznacza to że operując na zmiennych referencyjnych operujemy także na zmiennej oryginalnej z pod której wywołana została funkcja Przekazując argumenty przez wartość, funkcja może zwrócić tylko jeden parametr za pomocą return. Oznacza to, że możliwe jest zmodyfikowanie wartości tylko jednej zmiennej lokalnej występującej poza wywoływaną funkcją (tak jak w przykładzie na poprzednim slajdzie). W przekazywaniu wartości przez referencję, podczas wywołania jednej funkcji możemy zmienić kilka zmiennych.">

Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Przekazywanie argumentów & i. #include using namespace std; int zwieksz (int liczba) { // zmienna 'liczba' jest kopią zmiennej 'dlugosc' liczba = liczba.

Podobne prezentacje


Prezentacja na temat: "Przekazywanie argumentów & i. #include using namespace std; int zwieksz (int liczba) { // zmienna 'liczba' jest kopią zmiennej 'dlugosc' liczba = liczba."— Zapis prezentacji:

1 Przekazywanie argumentów & i

2 #include using namespace std; int zwieksz (int liczba) { // zmienna 'liczba' jest kopią zmiennej 'dlugosc' liczba = liczba * 2; return liczba; } int main() { int dlugosc = 125; cout << dlugosc << endl; // przypisujemy nową wartość dla zmiennej dlugosc = zwieksz(dlugosc); cout << dlugosc << endl; system("pause >nul"); return 0; } Przekazywanie argumentów przez wartość Najpopularniejszą metodą budowania funkcji jest przekazywanie argumentów przez wartość. Funkcja musi zawierać argumenty wraz z ich typami oddzielone przecinkami. Kiedy przekazujemy do funkcji jakąś zmienną, zostaje utworzona w pamięci jej kopia. Wszystko co dzieje się wewnątrz funkcji odbywa się tak na prawdę na kopii zmiennej przekazanej w argumencie poprzez wartość. W takim wypadku konieczne staje się zwrócenie odpowiedniej wartości za pomocą return i przypisanie zwróconej wartości do odpowiednich zmiennych. Jeżeli funkcja nie zwróci żadnej wartości, wtedy jej wywołanie może stać się bezcelowe. Utworzona kopia zmiennej, nawet jeżeli zostanie zmodyfikowana, zostanie usunięta z pamięci po zakończeniu funkcji.

3 #include using namespace std; void zmien(int &liczba) { // modyfikując referencję modyfikujemy też //zmienną oryginalną liczba = ; } int main() { int test = 0; cout << test << endl; // wywołanie funkcji (referencja zmiennej 'test') zmien(test); // wyświetlenie nowej wartości cout << test << endl; system("pause >nul"); return 0; } Przekazywanie argumentów przez referencję W funkcji tworzymy dowolną ilość argumentów wraz z typami. Nazwy argumentów poprzedzone są ampersandem (&). Zmienne wewnątrz funkcji nie są kopią, oznacza to że operując na zmiennych referencyjnych operujemy także na zmiennej oryginalnej z pod której wywołana została funkcja Przekazując argumenty przez wartość, funkcja może zwrócić tylko jeden parametr za pomocą return. Oznacza to, że możliwe jest zmodyfikowanie wartości tylko jednej zmiennej lokalnej występującej poza wywoływaną funkcją (tak jak w przykładzie na poprzednim slajdzie). W przekazywaniu wartości przez referencję, podczas wywołania jednej funkcji możemy zmienić kilka zmiennych.

4 Przykład #include using namespace std; void Zamiana1(int a, int b) { // przez wartość int x; x = a; a = b; b = x; } void Zamiana2(int &a, int &b) { // przez referencję int x; x = a; a = b; b = x; } main() { int x = 12; int y = 35; cout << " x : y\n" " \n" << x << " : " << y << endl; Zamiana1(x,y); cout << x << " : " << y << endl; Zamiana2(x,y); cout << x << " : " << y << endl << endl; system("pause"); } W programie zdefiniowano dwie funkcje Zamiana1 i Zamiana2. Różnią się one jedynie tym, iż argumenty funkcji Zamiana1 są przekazywane poprzez wartość, a argumenty funkcji Zamiana2 przekazywane są poprzez referencję. Obie funkcję zamieniają ze sobą zawartości argumentów a i b. Z wyniku działania programu widać wyraźnie, iż zamiana argumentów w funkcji Zamiana1 nie wpływa na zmienne x i y funkcji main. Pozostają one bez zmian. Zatem możemy wyciągnąć wniosek, iż funkcja Zamiana1 działała jedynie na kopiach zmiennych x i y przekazanych poprzez stos. W przypadku funkcji Zamiana2 nastąpiła faktyczna zamiana zmiennych x i y. Wnioskujemy zatem, iż funkcja Zamiana2 otrzymawszy adresy argumentów uzyskała dostęp do zmiennych x i y funkcji main.

5 Parametrami formalnymi nazywamy argumenty, które pojawiają się w nagłówku deklarowanej (również definiowanej) funkcji. Lista tych parametrów zawiera nazwy i typy argumentów, na przykład: void funkcja (int a, double b); Parametry aktualne to argumenty podawane podczas uruchamiania funkcji. Przypisywane są one parametrom formalnym zgodnie z kolejnością na liście. Należy pamiętać o zachowaniu zgodności typów i liczby parametrów, na przykład: int x=2; funkcja (x, 5.3); Jeśli w miejscu parametrów formalnych wpiszemy słowo kluczowe void, to funkcja nie będzie posiadała parametrów. Przekazywanie parametrów przez wartość stosowane jest przede wszystkim wówczas, gdy chcemy, aby wartość parametrów aktualnych była zmieniana wewnątrz funkcji, lub gdy w miejsce parametrów chcemy wstawić wartości liczbowe. Przekazywanie parametrów przez referencję jest stosowane w sytuacji, gdy chcemy, aby zmiany dokonywane na parametrach wewnątrz funkcji były przekazywane również na zewnątrz. Chcemy aby zmieniana była wartość parametru aktualnego.

6 Przekazywanie argumentów przez wskaźnik Ale o tym później ;-)

7 Przekazywanie argumentów przez wskaźnik

8 argumentow-funkcji-przez-referencje/356 Zapoznaj się z materiałem na podanej niżej stronie i wykonaj zadanie domowe (na końcu strony)


Pobierz ppt "Przekazywanie argumentów & i. #include using namespace std; int zwieksz (int liczba) { // zmienna 'liczba' jest kopią zmiennej 'dlugosc' liczba = liczba."

Podobne prezentacje


Reklamy Google