DOMANDA Puntatori domandina semplice

Pubblicità

Robert T.

Utente Attivo
Messaggi
134
Reazioni
11
Punteggio
38
Tralasciando codice irrivelante per questa domanda, qual'è la differenza tra questo codice e l'altro? fanno tutti e due la stessa cosa.

Codice:
int a = 2;
int *Ptr;
*Ptr = a;

Codice:
int a = 2;
int *Ptr;
Ptr = &a;
 
Nel primo, dici che il valore puntato da Ptr è uguale ad a, nel secondo assegni l'indirizzo della variabile a Ptr
 
Non mi pare che facciano la stessa cosa
il primo codice non assegna un indirizzo alla variabile puntatore Ptr
ma cerca di assegnare un valore al contenuto da essa puntata (che non c'è)
 
Nel primo caso staresti assegnando al indirizzo puntato da Ptr il valore di a (però Ptr non è stato inizializzato, quindi può puntare ad un indirizzo a caso oppure a NULL, a seconda del compilatore, quindi quell'assegnazione darà errore al 99% dei casi. Prima di utilizzare Ptr quindi gli devi dare un indirizzo a cui puntare, che può essere una variabile come a, oppure uno spazio di memoria allocato dinamicamente con una malloc/calloc).
Nel secondo caso invece assegni a Ptr l'indirizzo di a, quindi ogni volta che userai *Ptr accederai al valore di a. In questo caso sì che puoi ora scrivere *Ptr = a qualcosa, poiché Ptr è stato inizializzato e punta ad un indirizzo valido.
 
Pubblicità

Ci sono discussioni simili a riguardo, dai un'occhiata!

Pubblicità

Discussioni Simili

Indietro
Top