Ogólnie kod daje się skompilować, jednak warto zwrócić uwagę na ostrzeżenia kompilatora. Funkcja foo zwraca wskaźnik na zmienną lokalną, co sprawia że zwrócony wskaźnik nie wskazuje na żaden konkretny obiekt. Odwołanie się do tego obiektu skutkuje niezidentyfikowanym zachowaniem (UB).
Mimo wszystko, jeżeli wyświtliło Ci się 15, to działa to tak:
1. Wysyłasz do funkcji foo wartość 5,
2. W funkcji ta wartość jest mnożona przez wartość ze zmiennej b i do niej przypisana (3 * 5 = 15),
3. Przypisujesz w main do obiektu c wartość zwróconego wskaźnika,
4. Wyświetlasz zawartość obiektu wskazywanego przez c.