In deinem Beispiel übergibst du eine simple Adresse, keinen Pointer.
Obwohl das Prinzip ja dasselbe ist, da, wenn man einen Pointer übergeben würde, man die Adresse auf einen Speicherblock hätte, was ja auf das gleiche hinausläuft, nämlich, dass sich auf dem Stack eine Adresse zu einer Variablen befindet, die binnen der Routine einen Wert erhalten soll.
Veranschaulichung [Übergabe eines Pointers, anstatt einer direkten Adresse mit Hilfe des Adressoperators]:
Quote:
DWORD pid, *p;
/*p wird als DWORD deklariert, damit der Compiler weiß, wieviele Bytes bei der Dereferenzierung benötigt werden, aber ein Pointer selber ist immer 4 Bytes groß*/
p = &pid
// *p würde den Pointer dereferenzieren und man erhält den Wert von 'pid'
// &p gibt nur die Adresse des Pointers, der auf eine andere Adresse zeigt, wieder
GetWindowThreadProcessId(hgw, p);
|