pointer funktionsaufruf
-
Hallo,
ich hab ein kleines verständnis-problem mit zeigern...
ich übergebe als funktionsparameter einern zeiger
int main(void) { unsigned char *ptr = NULL; //... Function(ptr); } void Function (unsigned char *ptr) { unsigned int i=4; ptr += i; }
Wenn ich nach dem Funktionsaufruf "Function" wieder zu main zurückkehre, zeigt der pointer nicht auf die stelle ptr + i sondern auf die alte stelle ptr (vor dem funktionsaufruf)...
Warum wird der Wert, auf den der Zeiger zeigen soll nicht aus der Funktion übernommen???
mfg
gerhard
-
Weil das Argument (die Adresse als Wert) kopiert wird. Um die Adresse zu ändern brauchst Du einen Pointer auf den Pointer:
#include <stdio.h> void function( unsigned char **ptr ) { *ptr += 4; } int main( void ) { unsigned char *ptr = 0; printf( "%p\n", ptr ); function( &ptr ); printf( "%p\n", ptr ); }
cheers, Swordfish