Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. 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

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...

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?

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

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

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