Kurze Pointer Frage



  • Hallo,

    #include <iostream>
    using namespace std;
    
    int *ptr(int var);   
    
    int main ()
    {
    
    int var;
    
    	var = *ptr(20);  
    	cout << var;    
    
    system("PAUSE");
    }
    
    int *ptr(int var)  // Besser static int var; verwenden ? Wird der Speicher von int var;
    {                 // beim Verlassen der Funktion wieder freigeben ?
    
    return &var;   
    }
    

  • Mod

    Das geht gar nicht. Funktionsparameter können nicht static sein. Was willst du überhaupt erreichen?

    P.S.: Und ja, die Funktionparameter sterben bei Verlassen der Funktion.



  • Ich hatte einen Denkfehler ich glaub jetzt hab ich es verstanden.

    #include <iostream>
    using namespace std;
    
    int *ptr( int );
    
    int main ()
    {
    
    int *var = ptr( 20 );
    cout<<*var;
    
    system("PAUSE");
    }
    
    int *ptr( int i )
    {
    static int s = i;
    
    // 004011BC                    |.  8B45 08               MOV EAX,DWORD PTR SS:[EBP+8]       ; EBP+8 = 14h
    // 004011BF                    |.  A3 A4204000           MOV DWORD PTR DS:[4020A4],EAX      ; Im Daten Segment an Adresse 4020A4 wird die 14h gesichert
    
    return &s;
    }
    

    Bei meinem ersten Post dachte ich das der Parameter int var; vielleicht zerstört wird wenn die Funktion int *ptr(int var); verlassen wird.
    Aber int var; bekommt ja vor dem Funktionsaufruf einen Wert.


Log in to reply