Originariamente inviato da notexpert
Salve. Ho un problema. In pratica ho una funzione, chiamiamola Alpha, che prende un intero e, a seconda di una condizione restituisce (dovrebbe restituire) una stringa. Ad esempio

codice:
Alpha (int a) {
if (a>0) return "Positivo";
Il che non funziona affatto.

Qualcuno può gentilmente spiegarmi dove sbaglio?

Ringraziando anticipatamente,

Lorenzo.
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

E' lo stesso motivo per il quale non puoi restituire un array allocato staticamente in una funzione ad un altra funzione

una soluzione banale prevede che allochi lo spazio dinamicamente e usi una strcpy per inserire "positivo" all'interno della tua stringa. L'allocazione dinamica fa si che la variabile sia allocata nell'heap che non si "esaurisce" all'uscita dalla funzione