Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - puntatori a NULL ???
Forum - C/C++ - puntatori a NULL ???

Pagine: [ 1 2 ] Precedente | Prossimo
Avatar
NicobhC (Normal User)
Rookie


Messaggi: 23
Iscritto: 21/02/2008

Segnala al moderatore
Postato alle 1:28
Domenica, 25/05/2008
:ot: 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 :D


In the eye of the tornado, blow me away

http://s12.bitefight.it/c.php?uid=41103
PM Quote
Avatar
gantonio (Normal User)
Guru^2


Messaggi: 1532
Iscritto: 09/09/2007

Segnala al moderatore
Postato alle 9:04
Domenica, 25/05/2008
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 ...

PM Quote
Avatar
Bond93 (Ex-Member)
Pro


Messaggi: 135
Iscritto: 04/05/2008

Segnala al moderatore
Postato alle 10:49
Domenica, 25/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...


420 Sailing!!!
PM Quote
Avatar
NicobhC (Normal User)
Rookie


Messaggi: 23
Iscritto: 21/02/2008

Segnala al moderatore
Postato alle 11:56
Domenica, 25/05/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?


In the eye of the tornado, blow me away

http://s12.bitefight.it/c.php?uid=41103
PM Quote
Avatar
gantonio (Normal User)
Guru^2


Messaggi: 1532
Iscritto: 09/09/2007

Segnala al moderatore
Postato alle 13:21
Domenica, 25/05/2008
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
PM Quote
Avatar
NicobhC (Normal User)
Rookie


Messaggi: 23
Iscritto: 21/02/2008

Segnala al moderatore
Postato alle 17:36
Domenica, 25/05/2008
Testo quotato

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


In the eye of the tornado, blow me away

http://s12.bitefight.it/c.php?uid=41103
PM Quote
Avatar
gantonio (Normal User)
Guru^2


Messaggi: 1532
Iscritto: 09/09/2007

Segnala al moderatore
Postato alle 17:47
Domenica, 25/05/2008
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.

PM Quote
Avatar
NicobhC (Normal User)
Rookie


Messaggi: 23
Iscritto: 21/02/2008

Segnala al moderatore
Postato alle 18:02
Domenica, 25/05/2008
Testo quotato

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è?)


In the eye of the tornado, blow me away

http://s12.bitefight.it/c.php?uid=41103
PM Quote
Avatar
gantonio (Normal User)
Guru^2


Messaggi: 1532
Iscritto: 09/09/2007

Segnala al moderatore
Postato alle 18:17
Domenica, 25/05/2008
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
PM Quote
Pagine: [ 1 2 ] Precedente | Prossimo