zeiger :/ :)
-
void main(void)
{int var_test;
int *ptr_test;var_test = 12;
ptr_test = &var_test;
printf("Variable:\n\n");
printf("var_test: %i\n", var_test);
printf("&var_test: %p\n", &var_test);printf("\n\n\nPointer\n\n");
printf("ptr_test: %p\n", ptr_test);
printf("&ptr_test: %p\n", &ptr_test);
printf("*ptr_test: %i\n", *ptr_test);getchar();
}
gibt folgendes aus:
Variable:
var_test: 12
&var_test: 0012FF88Pointer
ptr_test: 0012FF88
&ptr_test: 0012FF84
*ptr_test: 12ist mir auch fast alles klar .. aber eben nur fast
Bei Variable:
var_test: gibt wert aus
&var_test: gibt addresse aus wo die variable abgelegt istBei Pointer:
ptr_test: gibt addresse aus wo die variable var_test liegt
*ptr_test: gibt den wert von var_test ausaber was macht:
&ptr_test:
erster gedanke ... gibt die Adresse des pointers aus
[ ... also nicht die addresse der variablen auf die der pointer zeigt ]aber warum ist dann der Addresswert kleiner als der der Variablen
wenn ich doch zuerst die Variable deklariere und dann den Pointerfür mich wäre es logisch gewesen wenn die beiden adressen vertauscht wären
also
Speicher
0 - 1 - 2 ....... VARIALBE - POINTER ...... unendlich :>
aber so wies mom scheint ist es:
0 - 1 - 2 ...... Pointer - Variable ...... unendlich
hoffe ihr könnt mir helfen
-
Waechst nicht der Stack nach unten?
Also: 0xFFFF - 0xFFFE - .... - Varialbe - Pointer - ... 1 - 0
-
Entyl_Sa schrieb:
Waechst nicht der Stack nach unten?
Also: 0xFFFF - 0xFFFE - .... - Varialbe - Pointer - ... 1 - 0achso ..
ja wenn mir das mal einer sagen würde ... dann ist es klaralso sehe ich das richtig das
&ptr_test: die addresse des pointers ausgibt ?
p.s. warum hat man den "stack" nicht anderst aufgebaut .. das er nach oben zählt
hängt das evtl damit zusammen das man in assembler eigentlich auch nur auf
zero bzw not zero prüfen kann ?thx
-
ja das
&ptr_test
gibt die adresse der pointer-variable aus
(der pointer ist ja nur eine variable, die eine adresse aufnehmen kann).und wie der stack aufgebaut wird das kommt auf dein system an...