Przekazywanie parametrów przez zmienną i przez wartość

Przekazywanie parametrów przez zmienną

Przekazanie argumentów przez wskaźnik polega na przekazaniu do funkcji kopii wskaźnika do zmiennej (jest to więc przekazanie przez wartość wskaźnika). Dzięki przekazaniu zmiennej przez wskaźnik, mamy możliwość zmiany wartości przekazanej zmiennej wewnątrz funkcji.

Przykład:

#include <iostream.h>
#include <stdlib.h>

/* za pomocą operatora "*" informujemy kompilator o tym, że argumentem funkcji będzie wskaźnik. Wewnątrz funkcji też musimy pamiętać, że wartości "a" i "b" to wskaźniki, więc znów trzeba używać operatora "*" */
int Add(int *a, int *b)
{
    int wynik=*a+*b;
    *a=*b=0;
    return wynik;
}

int main()
{
    int x=1,y=2,z;

    /*aby przekazać do funkcji adres zmiennej trzeba użyć    operatora pobrania adresu "&"*/
    z=Add(&x,&y);
    cout << "Wynik = " << z << endl;
    cout << "a = " << x << endl;
    cout << "b = " << y << endl;
    system("PAUSE");
    return 0;
}

W tym przypadku wynik działania programu będzie następujący:
Wynik = 3
a=0
b=0

Dzieje się tak dlatego, że operacje wewnątrz funkcji (zerowanie zmiennych) przeprowadzane na podstawie adresów zmiennych "x" i "y", a więc nie na kopiach tych zmiennych (tak jak miało to miejsce w przypadku przekazania parametrów przez wartość), tylko na oryginalnych zmiennych "x" i "y".

Przekazywanie parametrów przez wartość

W wyniku przekazania przez wartość funkcja otrzymuje kopię zmiennej. Przekazany w ten sposób parametr traktowany jest jak zmienna lokalna funkcji, co oznacza, że istnieje wyłącznie podczas jej wykonania i jest niszczona przy wyjściu z funkcji.

Przykład:

#include <iostream.h>
#include <stdlib.h>

int Add(int a, int b)
{
    int wynik=a+b;
    a=b=0; //wartości zmiennych wewnątrz funkcji są zerowane
    return wynik;
}

int main()
{
    int x=1,y=2,z;
    z=Add(x,y);
    cout << "Wynik = " << z << endl;
    cout << "a = " << x << endl; // wypisanie zmiennych które wewnątrz
    cout << "b = " << y << endl; // funkcji zostały "wyzerowane"
    system("PAUSE");
    return 0;
}

Wynik działania programu:
Wynik = 3
a = 1
b = 2

Widać, iż pomimo "wyzerowania" zmiennych a i b wewnątrz funkcji Add, wartości zmiennych przekazanych do tej funkcji (x,y) nie zostają zmienione. Dzieje się tak dlatego, że w przekazaniu parametrów przez wartość, do funkcji przekazywane są kopie zmiennych, a nie same zmienne.


Wyszukiwarka

Podobne podstrony:
Funkcje, przekazywanie przez wartość
zarządzanie przez wartość, Zarządzanie(1)
W filozofii przez wartość rozumie się to wszystko co?nne
Przekazanie aktywów przez klientów, Gazeta Podatkowa
D19221007 Protokuł przekazania władzy przez Naczelnika Państwa Józefa Piłsudskiego Prezydentowi Rze
Zarządzanie przez wartości
D19221029 Protokuł przekazania władzy przez Marszałka Sejmu Macieja Rataja Prezydentowi Rzeczypospo
Prąd przemienny2, Prąd przemienny - charakterystyczny przypadek prądu elektrycznego okresowo zmienne
Ćw2 Pomiary multimetryczne parametrów napięcia zmiennego
lab9, Przekazywanie parametrów, struktura programu
lab9, Przekazywanie parametrów, struktura programu
W12 Pomiary parametrów napięć zmiennych ppt
10 regresja liniowa prim, Parametry dwuwymiarowych zmiennych losowych
RMF z dnia 19 lutego 2009 r w sprawie informacji bieżących i okresowych przekazywanych przez emitent

więcej podobnych podstron