argumenty




[ 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 argumentow
functions arguments
zend arguments variable
Bioetyka argumentacjawewspczesnych B Chyrowicz
33 techniki negocjowania i argumentacji3nego
Jednostronna argumentacja
2015 01 15 Makro 1 rola państwa DEBATA ARGUMENTY
Argumenty przeciw EZ
Krytyczna analiza protestanckich argumentów dotyczących niektórych aspektów doktryny
Integracja nauczania Argumenty, nr 12(458), 1967
functions arguments
Argument list processing
Ćwiczenia 5 Polityka handlowa argumenty na rzecz protekcjonizmu
Kodeks argumentacyjny dla prawnikow J Stelmach

więcej podobnych podstron