Temat tego wykłady ilustruje poniższy przykład
#include<cstdlib> #include<iostream> using namespace std; void PrzesunWar(int x, int y, // ...przez wartość - Błąd! punkt nie będzie przesuniety int dx, int dy) // ...przez wartość - Ok { x += dx; y += dy; } void PrzesunWsk(int * x, int * y, // ...przez wskaźnik (adres) int dx, int dy) // ...przez wartość { *x += dx; // *x wyłuskanie wskaźnika (dereferencja) *y += dy; // *y wyłuskanie wskaźnika (dereferencja) } void PrzesunRef(int & x, int & y, // ...przez referencje (adres) int dx, int dy) // ...przez wartość { x += dx; // referencji używa się tak jak zwykłej zmiennej y += dy; // referencji używa się tak jak zwykłej zmiennej } int main(int argc, char *argv[]) { int x = 0, y = 0; cout << "Przekazywanie przez wartosc" << endl; for (int i=0; i<3; ++i) { PrzesunWar(x, y, 1, 2); cout << "(" << x <<", " << y <<")" << endl; } cout << "\nPrzekazywanie przez wskaznik" << endl; x=y=0; for (int i=0; i<3; ++i) { PrzesunWsk(&x, &y, // pobranie adresów zmiennych x i y 1, 2); cout << "(" << x <<", " << y <<")" << endl; } cout << "\nPrzekazywanie przez referencje" << endl; x=y=0; for (int i=0; i<3; ++i) { PrzesunRef(x, y, 1, 2); cout << "(" << x <<", " << y <<")" << endl; } system("pause"); return 0; };
Więcej można znaleźć na stronach: