[ Code Zone ] - Serwis programistyczny - C/C++
Strona główna
| Język C++ | C++
Builder | Programy
| Narzędzia
| Forum | Księga
gości | Sznurki | Kontakt
Przekazywanie argumentów do funkcji
Istnieją trzy sposoby przekazywania argumentów do funkcji:
przez wartość
przez wskaźnik
i przez referencję
Przekazywanie argumentów przez wartość
Przekazywanie elementu przez wartość powoduje, że
funkcja tylko na przekazanej wartości, a nie na samej zmiennej tzn.
jeśli zmieni ona wartość zmiennej przekazywanej to zmiana ta nie
będzie widoczna na zewnątrz funkcji. np. jeśli mamy funkcję o definicji:
void Kwadrat(int liczba){
liczba = liczba * liczba; return liczba;}
i gdzieś w kodzie wywołamy:
int x = 4;Kwadrat(x);
to wartość zmiennej zmiennej "x" się nie zmieni, choć
w funkcji napisano "liczba = liczba * liczba". Tak jest przekazując
argument przez wartość - funkcja operuje na kopii podanej zmiennej,
nie na jej adresie(wskaźniku). Dlatego powyższy kod należało by
zastąpić takim:
int x = 4;x = Kwadrat(x);
Funkcja przetwarza przekazaną wartość i zwraca
rezultat.
Przekazywanie argumentów przez wskaźnik
Przekazywanie zmiennej do funkcji przez wskaźnik
sprawia, że funkcja operuje na tej samej zmiennej, a nie na jej
kopii w pamięci. Jest to oczywiście szybsze, ale programista musi
uważać by ewentualna modyfikacja zmiennej była w pełni zgodna z jego
zamierzeniami. Przekształcimy przykład z poprzedniego tematu tak,
aby zmienna była modyfikowana wewnątrz funkcji:
//definicja
funkcjivoid Kwadrat(int *
liczba){ *liczba = *liczba * *liczba;}//gdzieś w kodzieKwadrat(&x);
Teraz przekazałeś do funkcji adres zmiennej (czyli
wskaźnik na nią), która wewnątrz ciała funkcji zostanie podniesiona
do kwadratu. Musielismy użyć operatora wyłuskania (*), aby
przypisywać do zmiennej wartość, a nie do wskaźnika adres.
Przekazywanie argumentów przez referencję
Przekazywanie przez referencję jest alternatywnym
sposobem przekazywania adresu zmiennej:
//definicja
funkcjivoid Kwadrat(int&
liczba){ liczba = liczba * liczba;}//gdzieś w kodzieKwadrat(x);
WhiteRAVEN,
3.06.2001
Wyszukiwarka
Podobne podstrony:
nazwy argumentowfunctions argumentszend arguments variableBioetyka argumentacjawewspczesnych B Chyrowicz33 techniki negocjowania i argumentacji3negoJednostronna argumentacja2015 01 15 Makro 1 rola państwa DEBATA ARGUMENTYArgumenty przeciw EZKrytyczna analiza protestanckich argumentów dotyczących niektórych aspektów doktrynyIntegracja nauczania Argumenty, nr 12(458), 1967functions argumentsArgument list processingĆwiczenia 5 Polityka handlowa argumenty na rzecz protekcjonizmuKodeks argumentacyjny dla prawnikow J Stelmachwięcej podobnych podstron