non capisco come questo esempio può eventualmente funzionare:Tornando un puntatore
double * GetSalary() {
double salary = 26.48;
return &salary;
}
main() {
cout << *GetSalary(); //prints 26.48
}
salary
è una variabile locale in GetSalary()
, quindi dopo il ritorno dalla funzione, questa cella potrebbe eventualmente essere sovrascritta da un'altra funzione. Non vedo come restituire un puntatore a una variabile locale (non installato nell'heap) possa mai funzionare.
Sì, potrebbe essere sovrascritto. O potrebbe non farlo. Ecco perché questo è chiamato ** comportamento non definito **, piuttosto che un ** crash garantito **. –
è divertente che il codice di obove sia il primo risultato quando google "restituisce il puntatore forma una funzione" – user695652
Spesso ottengo la stessa cosa. Ho l'impressione che Google modifichi il tuo fumetto di ricerca quando hai effettuato l'accesso a SO con un account Google. –