2015-04-15 3 views

Antwort

10

Sie müssen den Zeiger dereferenzieren, um den Wert zu ersetzen, auf den der Zeiger zeigt.

See:

#include <stdio.h> 

void func(int *p){ 
     int x = 3; 
     *p = x; 
} 

int main(){ 
    int y = 0; 
    func(&y); 
    printf("\n Value = %d",y); 
    return 0; 
} 

zum Ausgang Versagen fügen Sie den return 0 entfernen; Aussage in die Hauptfunktion.

Siehe Lauf Beispiel: http://ideone.com/rO8Gua

4

Sie meinen, Sie den Wert bei p-x setzen? Das ist

*p = x; 

Was Sie tatsächlich haben, p = &x, bedeutet die lokale Kopie des Zeigers ändern, anstatt auf Ihre lokale Variable zu verweisen.

7
void func(int *p){ 
    *p = 3; 
} 

Sie wurden p an die Adresse einer lokalen Variablen x Einstellung. Erstens ändert der Wert von nicht den Wert von y (die Funktion empfängt nur eine Kopie der Adresse y, und selbst wenn Sie das ändern, werden Sie nicht ändern y).

Zweitens ist x eine lokale Variable, daher können Sie den Inhalt nicht verwenden, nachdem die Funktion func beendet wurde.

Drittens können Sie die Adresse y auf diese Weise nicht ändern, da es sich um eine lokale Variable handelt. Sie müssten es als Zeiger deklarieren.

6

Sie zum Inhalt des Speichers durch p bezeichnet unter Verwendung von * p beziehen. Also wird p =&x; p nicht den Inhalt des Speichers ändern, auf den sich p bezieht. Sie sollten *p = x

verwendet haben