Originariamente inviato da anx721
Una cosa che puoi provare che sembra contraddire quanto detto sopra è ancora:

codice:
int * a(){
	 int e[3];
	 e[0] = 0;
	 e[1] = 1;
	 e[2] = 2;
	 return e;
}

int main()
{
    printf("%d", a()[2]);
    return 0;
}
la funzione a restituisce un puntatore a int, e lo fa creando un array locale e e restituendolo (perche un array è un puntatore costatnte).

Appena restituito il risultato la variablile locale ancora esiste e quindi puoi accedere a un elemento dell'array e stamparlo.


perché ciò è possibile ?
cioè... appena torna la funzione ancora i dati sono disponibili e si può accedere ad essi, ma già un'istruzione dopo tutto viene distrutto.
Ke tutto viene distrutto OK, è normale (a meno che i dati non siano static), ma perché immediatamente dopo il ritorno è possibile utilizzare quei dati??


grazie in anticipo!

ciao!