
//
// To jest przykładowy kod z podrozdziału 17.9 „Wskaźniki i referencje” książki
// "Programowanie. Teoria i praktyka z wykorzystaniem C++" Bjarne'a Stroustrupa.
//

//------------------------------------------------------------------------------

int main()
{
	int x = 10;
	int* p = &x;   // Do utworzenia wskaźnika potrzebny jest operator &.
	*p = 7;        // Przypisanie do x poprzez p za pomocą *.
	int x2 = *p;   // Odczyt x poprzez p.
	int* p2 = &x2; // Tworzy wskaźnik do innej liczby typu int.
	p2 = p;        // p2 i p wskazują x.
	p = &x2;       // Zmiana obiektu wskazywanego przez p.


	// Odpowiednik tego kodu dla referencji wygląda następująco:
	int y = 10;
	int& r = y;   // & jest w typie, nie w inicjatorze.
	r = 7;        // Przypisanie do y poprzez r (nie potrzeba operatora *).
	int y2 = r;   // Odczyt y poprzez r (nie potrzeba operatora *).
	int& r2 = y2; // Utworzenie referencji do innego obiektu typu int.
	r2 = r;       // Wartość y przypisana do y2.
	r = &y2;      // Błąd: nie można zmienić wartości referencji
	// (nie ma przypisania int* do int&).

}

//------------------------------------------------------------------------------
