Stackadressierung
-
Hallo
Ich habe eine Frage zu folgendem Quellcode:void function(int a) { int *ret; ret = &a - 1; (*ret) += 8; } void main() { int x; x = 0; function(1); x = 1; printf("%d\n",x); getchar(); }
Und zwar:Warum wird am Zeier "ret" 2mal was verändert??
Meiner Meinung nach würde es doch ausreichen ENTWEDER die Adresse des Zeigers auf die Rücksprungadresse zu verändern ODER den wert des Zeigers selbst zuverändern.
Aber beides,klingt in meinen Ohren nicht logisch!
Mfg Jöhrn
-
Die Funktion funktion erhöht den wert des int der vor dem funktionsparameter a an stack liegt um 8. Was dort am stack liegt kann ich nicht sagen ( Rücksprungagresse ? BP ? )
Kurt
-
Stimmt!
Jetzt wrd mir alles klar.Es ist die Rücksprungadresse,dass wusste ich.Danke für die Hilfe.