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


Anmelden zum Antworten