Se ho dichiarato un puntatore p
come int *p
; nel modulo principale, posso modificare l'indirizzo contenuto da p
assegnando p=&a;
dove a
è un'altra variabile intera già dichiarata. Ora voglio cambiare l'indirizzo utilizzando una funzione come ::Modifica dell'indirizzo contenuto dal puntatore tramite la funzione
void change_adrs(int*q)
{
int *newad;
q=newad;
}
Se chiamo questa funzione dal modulo principale
int main()
{
int *p;
int a=0;
p=&a; // this changes the address contained by pointer p
printf("\n The address is %u ",p);
change_adrs(p);
printf("\n the address is %u ",p); // but this doesn't change the address
return 0;
}
il contenuto indirizzo è invariato. Cosa c'è di sbagliato nell'usare una funzione per lo stesso compito?
Si passa il puntatore del valore. Se è necessario modificare il puntatore all'interno della funzione, passarlo per riferimento ... doppio puntatore. –