Chicken getChick(int nr) { return chicken[nr]; }
Ta funkcja zwraca Chicken jako wartość - czyli `return chicken[nr]` kopiuje N-ty element tablicy i zwraca tą kopię. Tak więc linia `&animal.getChick(x)` daje Ci adres kopii, a nie zawartości klasy.
Jeśli chcesz zwrócić referencję do pola klasy, bez kopiowania, zwróć... referencję ;)
(w Twoim drugim kodzie jest oczywiście intuicyjnie - wypisujesz po kolei adres każdego elementu tablicy.)