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; }
-
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.