Originariamente inviato da Celebron
se è C, il motivo è banale

una stringa di quel tipo viene allocata staticamente nello stack della funzione a compile time. Questo significa che appena esci dalla funzione perdi ogni riferimento a quella stringa in quanto lo stack di quella funzione esaurisce il suo compito
In realtà, se il codice è effettivamente come l'ha scritto, quello che hai detto non è corretto, dato che "Positivo" non è una variabile allocata sullo stack, ma è uno string literal, per cui se restituisci un char * (meglio const char *) che punta ad esso non hai problemi. Lo standard infatti garantisce che gli string literal esistano per tutta l'esecuzione del programma; in genere essi sono memorizzati nella tabella delle stringhe dell'eseguibile (che sta in un particolare segmento), e questa è mappata in memoria per tutta l'esecuzione del programma.

Ovviamente il tuo discorso si applica per le stringhe effettivamente allocate sullo stack.