NicobhC (Normal User)
Rookie
Messaggi: 23
Iscritto: 21/02/2008
|
scusate se ho postato qua ma non sapevo dove pubblicare il quesito, non trovando una sezione apposita.
Comunque...qualcuno mi può spiegare cosa significhi che un puntatore punti a NULL?
Grazie
|
|
gantonio (Normal User)
Guru^2
Messaggi: 1532
Iscritto: 09/09/2007
|
Attenzione ... i casi sono due e sono distinti
1) un puntatore "punta" a NULL quando il puntatore e' valido e punta ad un valore in memoria che e' lo zero binario ...
2) un puntatore "vale" NULL quando non e' un puntatore valido ...
Non so quale dei due casi stai trattando ...
|
|
Bond93 (Ex-Member)
Pro
Messaggi: 135
Iscritto: 04/05/2008
|
in genere vale il 2 caso cioè un puntatore è uguale a NULL se è un puntatore non valido per esempio risultano NULL i puntatori ritornati dalle funzioi di allocazione (malloc, calloc..) fallite oppure quelli di apertura file fallita...
se dici qual'è il tuo problema in particolare magari ti possiamo aiutare meglio...
|
|
NicobhC (Normal User)
Rookie
Messaggi: 23
Iscritto: 21/02/2008
|
il problema era semplicemente capire cosa sia la costante NULL e cosa significasse che il puntatore punti a quest'ultima ed è ok.
ora che ci sono però, cosa intendete per zero binario?
|
|
gantonio (Normal User)
Guru^2
Messaggi: 1532
Iscritto: 09/09/2007
|
Per un computer, come saprai, tutto e' numerico ...
La costante NULL equivale ad un numero, lo 0 binario ...
Pero' non ho capito bene il tuo problema ... non comprendi questa scrittura
char *p = NULL;
o quest'altra
char c = NULL;
char *p = &c;
... sono diverse ...
Ultima modifica effettuata da gantonio il 25/05/2008 alle 13:24 |
|
NicobhC (Normal User)
Rookie
Messaggi: 23
Iscritto: 21/02/2008
|
Postato originariamente da gantonio:
Per un computer, come saprai, tutto e' numerico ...
La costante NULL equivale ad un numero, lo 0 binario ...
Pero' non ho capito bene il tuo problema ... non comprendi questa scrittura
char *p = NULL;
o quest'altra
char c = NULL;
char *p = &c;
... sono diverse ...
|
questa: char *p=NULL |
|
gantonio (Normal User)
Guru^2
Messaggi: 1532
Iscritto: 09/09/2007
|
Quindi un "puntatore NULL" ...
Un puntatore contiene l'indirizzo di un dato.
Visto che l'indirizzo 0, per convenzione, e' vietato, ad un puntatore viene assegnato il valore 0 (che e' uguale alla costante NULL) in modo da indicare che NON e' un puntatore valido in quel momento.
In seguito, gli si assegnera' un valore (un indirizzo) che, per essere valido, DOVRA' essere diverso da zero e DOVRA' essere un indirizzo allocato nello spazio degli indirizzi del processo.
|
|
NicobhC (Normal User)
Rookie
Messaggi: 23
Iscritto: 21/02/2008
|
Postato originariamente da gantonio:
Quindi un "puntatore NULL" ...
Un puntatore contiene l'indirizzo di un dato.
Visto che l'indirizzo 0, per convenzione, e' vietato, ad un puntatore viene assegnato il valore 0 (che e' uguale alla costante NULL) in modo da indicare che NON e' un puntatore valido in quel momento.
In seguito, gli si assegnera' un valore (un indirizzo) che, per essere valido, DOVRA' essere diverso da zero e DOVRA' essere un indirizzo allocato nello spazio degli indirizzi del processo. |
e che non ne capisco l'utilità...tanto vale che non gli venga assegnato nessun valore o no? (ovviamente no, ma perchè?) |
|
gantonio (Normal User)
Guru^2
Messaggi: 1532
Iscritto: 09/09/2007
|
Non esiste il concetto di "nessun valore" per un puntatore ...
Deve avere un valore, ma per capire se il puntatore e' valido o no, puo' essere usato il NULL.
Se il puntatore e' uguale a NULL, allora non e' sicuramente valido.
Ultima modifica effettuata da gantonio il 25/05/2008 alle 18:17 |
|