Non. sizeof(int*), sizeof(toto*), sizeof(n_importe_quoi *) est égale à sizeof(void *).
C'est pour celà que des trucs tordus comme ci-dessous sont possibles :
typedef struct list * plist ;
static size_t taille = sizeof (struct list *) ; static size_t taille2 = sizeof (struct list) ; // invalide => invalid application of `sizeof' to an incomplete type
static size_t taille3 = sizeof (plist) ;
struct list {
struct list * prec ;
struct list * next ;
data ;
} ; // la taille de "struct list" n'est connu que ici. static size_t taille4 = sizeof (struct list) ; // valide => le taille est maintenant connue.
Ceci marche car "struct list *" est connu en taille avant même sa déclaration et la taille est sizeof (void *) (ou (n_importe_quoi *)).
par contre sur certains plate forme (64 bits notament) sizeof(0) != sizeof(void *).
[^] # Re: Petites precisions
Posté par 007 . En réponse au journal J'adore Linus. Évalué à 0.
Merci, je bookmark :-)
> sizeof(toto *) != sizeof (void *)
Non. sizeof(int*), sizeof(toto*), sizeof(n_importe_quoi *) est égale à sizeof(void *).
C'est pour celà que des trucs tordus comme ci-dessous sont possibles :
typedef struct list * plist ;
static size_t taille = sizeof (struct list *) ;
static size_t taille2 = sizeof (struct list) ; // invalide => invalid application of `sizeof' to an incomplete type
static size_t taille3 = sizeof (plist) ;
struct list {
struct list * prec ;
struct list * next ;
data ;
} ; // la taille de "struct list" n'est connu que ici.
static size_t taille4 = sizeof (struct list) ; // valide => le taille est maintenant connue.
Ceci marche car "struct list *" est connu en taille avant même sa déclaration et la taille est sizeof (void *) (ou (n_importe_quoi *)).
par contre sur certains plate forme (64 bits notament) sizeof(0) != sizeof(void *).