// ptrstr.cpp -- použití ukazatelů na řetězce
#include <iostream>
#include <cstring> // deklaruje strlen(), strcpy()
int main()
{
	using namespace std;
	char animal[20] = "medved"; 			// animal obsahuje medved
	const char * bird = "strizlik"; 	// bird obsahuje adresu řetězce
	char * ps; 										// neinicializováno

	cout << animal << " a "; 	// zobrazí medved
	cout << bird << "\n"; 		// zobrazí strizlik
	// cout << ps << "\n";		// může zobrazit nesmysl nebo způsobit pád programu

	cout << "Zadejte druh zvirete: ";
	cin >> animal; 						// v pořádku pokud je vstup kratší než 20 znaků
	// cin >> ps; Velmi hrubá chyba;
	// ps neukazuje na alokovaný prostor

	ps = animal; 						// nastaví ps, aby ukazoval na řetězec
	cout << ps << "!\n"; 			// v pořádku, stejné jako použití animal
	cout << "Pred pouzitim strcpy():\n";
	cout << animal << " je na adrese " << (int *) animal << endl;
	cout << ps << " je na adrese " << (int *) ps << endl;

	ps = new char[strlen(animal) + 1]; // získá novou paměť
	strcpy(ps, animal); // kopíruje řetězec do nové paměti
	cout << "Po pouziti strcpy():\n";
	cout << animal << " je na adrese " << (int *) animal << endl;
	cout << ps << " je na adrese " << (int *) ps << endl;
	delete [] ps;
	
	return 0;
}
