1. PRZEKAZYWANIE PARAMETRÓ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 naprawdę 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.
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.
Przykład:
#include <iostream>
using namespace std;
int a,b;
void Wartosci (int x, int y)
{
x=x+10;
y=y-10;
cout << "x=" << x << endl;
cout << "y=" << y<< endl;
}
int main()
{
cin >> a >> b;
Wartosci(a,b);
cout << a=" << a << endl;
cout << "b=" << b << endl;
return 0;
}
2. PRZEKAZYWANIE PARAMETRÓW PRZEZ ZMIENNĄ - PRZEZ REFERENCJĘ
W procedurze lub funkcji, w której parametry przekazywane są przez zmienną (przez referencję), operacje wykonywane w tej treści procedury na parametrach formalnych w momencie wywołania danej procedury powodują wykonanie tych operacji na odpowiednich parametrach aktualnych.
Przykład:
#include <iostream>#include <cstdlib>
using namespace std;
void zwieksz_kilka(int *dl, int *wys, int *waga)
{
*dl = *dl * 2;
*wys = *wys * 2;
*waga = *waga * 2;
}
int main()
{
int dlugosc = 125;
int wysokosc = 300;
int waga = 20;
int wysokosc = 300;
int waga = 20;
int *wsk_dlugosc = &dlugosc;
int *wsk_wysokosc = &wysokosc;
int *wsk_waga = &waga;
zwieksz_kilka(wsk_dlugosc, wsk_wysokosc, wsk_waga);
cout << dlugosc << endl;
cout << wysokosc << endl;
cout << waga << endl;
system("pause >nul");
return 0;
}
int *wsk_wysokosc = &wysokosc;
int *wsk_waga = &waga;
zwieksz_kilka(wsk_dlugosc, wsk_wysokosc, wsk_waga);
cout << dlugosc << endl;
cout << wysokosc << endl;
cout << waga << endl;
system("pause >nul");
return 0;
}
Brak komentarzy:
Prześlij komentarz