Ich verstehe nicht, wie dieses Beispiel möglicherweise funktionieren kann:einen Zeiger zurückkehrend
double * GetSalary() {
double salary = 26.48;
return &salary;
}
main() {
cout << *GetSalary(); //prints 26.48
}
salary
eine lokale Variable ist somit in GetSalary()
, nachdem sie von der Funktion zurückkehrte, könnte diese Zelle möglicherweise durch eine andere Funktion überschreibt. Ich sehe nicht, wie die Rückgabe eines Zeigers auf eine lokale Variable (nicht auf dem Heap) nicht möglich ist.
Ja, es könnte möglicherweise überschrieben werden. Oder vielleicht nicht. Deshalb wird dies als ** undefiniertes Verhalten ** und nicht als ** garantierter Absturz ** bezeichnet. –
ist es lustig, dass der obove-Code das erste Ergebnis ist, wenn ich googlen "Zeiger aus einer Funktion zurückgeben" – user695652
Ich bekomme oft die gleiche Sache. Ich habe die Idee, dass Google Ihre Suchblase ändert, wenn Sie mit einem Google-Konto bei SO eingeloggt sind. –