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).


Log in to reply