Originariamente inviato da anx721
Una cosa che puoi provare che sembra contraddire quanto detto sopra è ancora:
la funzione a restituisce un puntatore a int, e lo fa creando un array locale e e restituendolo (perche un array è un puntatore costatnte).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; }
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!![]()