2015-04-15 4 views

risposta

10

È necessario annullare il riferimento del puntatore per sostituire il valore su cui punta il puntatore.

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; 
} 

Per rimuovere la mancata uscita aggiungere il return 0; dichiarazione nella funzione principale.

vedi esempio in esecuzione: http://ideone.com/rO8Gua

4

Vuoi dire che si desidera impostare il valore a p-x? Ecco

*p = x; 

Quello che hai effettivamente ottenuto, p = &x, significa cambiare la copia locale del puntatore per puntare invece alla variabile locale.

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

Si stavano mettendo p per l'indirizzo di una variabile locale x. Innanzitutto, l'impostazione del valore di p non modifica il valore di (la funzione riceve semplicemente una copia dell'indirizzo di e, anche se la modifichi, non cambierai).

In secondo luogo, x è una variabile locale, quindi non è possibile utilizzare il suo contenuto dopo che la funzione func è terminata.

In terzo luogo, non è possibile modificare l'indirizzo di y in questo modo perché è una variabile locale. Dovresti dichiararlo come un puntatore.

6

È possibile fare riferimento al contenuto della memoria a cui si riferisce p utilizzando * p. Quindi, p =&x; cambierà p non il contenuto della memoria a cui fa riferimento p. Avresti dovuto usare, *p = x