Kleine elementare Frage
-
Hoi, warum gibt er hier 5 aus ?
#include <iostream> using namespace std; int* func(int a) { return (&a); } int main() { cout << *func(5) << endl; return (0); }a ist doch eigentlich lokal auf dem Stack der Funktion func ?! ... und da das Dingen via CallByValue übergeben wurde, sollte das doch auch gesondert aufem Stack liegt oder ?!

Danke für Aufklärung !

-
Das Verhalten ist undefiniert. Es *kann* klappen -- und in Deinem Fall tut es das ja auch -- aber das ist reiner Zufall.
-
Und wie siehts hier aus ?:
#include <iostream> using namespace std; struct SData { char szBuffer[100]; int iIndex; }; int main() { SData s1, s2; s2.iIndex = 0; strcpy(s2.szBuffer, "Funktioniert!"); s1 = s2; strcpy(s2.szBuffer, "Geht nicht!"); cout << s1.szBuffer << endl; return (0); }Denn die direkte Zueweisung alá:
char sz1[100], sz2[100]; sz1 = sz2;funktioniert ja auch nicht (
strcpy).