DOMANDA Puntatori domandina semplice

Robert T.

Utente Attivo
134
11
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;
 

rodhellas

Utente Èlite
1,522
427
CPU
Ryzen 5 3600
Dissipatore
GELID Phantom
Scheda Madre
MSI B450 Gaming Plus Max
HDD
500GB m.2 + 2TB HDD
RAM
16GB Corsair LPX 3000mhz
GPU
Gigabyte GTX 960 OC
Audio
Integrata
Monitor
SyncMaster 223BW
PSU
Antec HCG-520M
Case
Meshify C
Net
Gigabit Fastweb
OS
Windows 10 64bit
Nel primo, dici che il valore puntato da Ptr è uguale ad a, nel secondo assegni l'indirizzo della variabile a Ptr
 

BAT

Moderatore
Staff Forum
Utente Èlite
22,946
11,581
CPU
1-Neurone
Dissipatore
Ventaglio
RAM
Scarsa
Net
Segnali di fumo
OS
Windows 10000 BUG
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'è)
 

Bonfi97

Nuovo Utente
41
6
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.
 
  • Mi piace
Reazioni: rodhellas e BAT

Entra

oppure Accedi utilizzando
Discord Ufficiale Entra ora!

Discussioni Simili