Non è proprio come hai scritto ...

La questione è che il puntatore che restituisci indica un indirizzo di una zona di memoria dove c'è il dato che ti interessa.

Se questa zona punta allo stack (dato che punta a variabili locali ad una funzione), essendo quest'area distrutta alla fine della funzione, il tuo dato lo sarà di conseguenza e il puntatore inutile.

Una soluzione è far puntare il puntatore ad un'area (detta heap) che viene trattata in maniera diversa e che non viene eliminata automaticamente alla fine della funzione ma solo esplicitamente con la free.

Sembra che tutti questi concetti tu non li conosca ancora, quindi mi sembra che sia necessario per te attendere un po' e studiare con calma dai libri con metodo, altrimenti rischi di fare una gran confusione.