View Full Version : [C] Domanda molto stupida sui puntatori
D4rkAng3l
20-01-2006, 12:41
Ciao, il programmino è questo:
#include <stdio.h>
#include <stdlib.h>
int main(){
int y = 5; // Dichiara la variabile y
int *yPtr; // Dichaiara un puntatore ad una variabile di tipo intero
yPtr = &y; // Mette l'indirizzo della var y nella var puntatore yPtr
printf("Il valore di y e': %d\n", y);
printf("La locazione di memoria di y (yPtr) e': %p\n", yPtr);
printf("Il valore di &*yPtr e': %p\n", &*yPtr);
printf("Il valore di *&yPtr e': %p\n", *&yPtr);
system("PAUSE");
return 0;
}
Mi potete spiegare perchè &*yPter corrisponde a *&yPtr? (a parolee)
non mi riesce ad entrare...è grave? :cry:
AnonimoVeneziano
20-01-2006, 12:51
Beh, diciamo che a parole è così . Avendo sia & che * lo stesso ordine di precedenza vengono valutati da quello più vicino all' termine su cui devono agire verso l'esterno in questo modo:
&*yPtr è : "L'indirizzo dell' oggetto puntato dall' indirizzo contenuto da yPtr". Che è proprio l'indirizzo di "y" e quindi lo stesso valore contenuto in yPtr.
*&yPtr invece è : "Il valore dell' oggetto puntato dall' indirizzo di yPtr", che è proprio il valore contenuto in yPtr, che è sempre l'indirizzo di "y".
Ergo hai raggiunto lo stesso obbiettivo in 2 modi diversi :)
Nel primo caso il sistema valuta l'indirizzo di "y" con l'operatore "&", nel secondo caso invece viene letto da yPtr, col risultato che alla fine entrambi sono sempre la stessa cosa, ossia l'indirizzo di "y"
Ciao
D4rkAng3l
20-01-2006, 13:00
grazie, sei stato molto chiaro...non sò come sia possibile...sono 2 anni che programmo (anche se devo ancora dare l'esame ehhe)...l'anno scorso avevo anche capito le liste concatenate e sapevo implementalre...ma quel concetto mi ha sempre lasciato nun po' perplesso...non sò se sia normale avere questi dubbi..booo
AnonimoVeneziano
20-01-2006, 13:56
grazie, sei stato molto chiaro...non sò come sia possibile...sono 2 anni che programmo (anche se devo ancora dare l'esame ehhe)...l'anno scorso avevo anche capito le liste concatenate e sapevo implementalre...ma quel concetto mi ha sempre lasciato nun po' perplesso...non sò se sia normale avere questi dubbi..booo
Considerando che è difficile che userai mai un costrutto del tipo "&*ptr" per me te ne puoi anche sbattere :D
Vedi invece di aver compreso costrutti come :
&((*ptr)->membro) . Questi tipi di costrutti con le strutture sono già più importanti (comunque generalmente coi puntatori non si fanno mai cose troppo complesse. Se viene una costruzione coi puntatori troppo complessa allora forse è il caso di ritornare alla progettazione ;) )
Ciao
vBulletin® v3.6.4, Copyright ©2000-2026, Jelsoft Enterprises Ltd.