2010-04-29 3 views
2
printf("pointer: %d\n", sizeof(*void)); 

Cette ligne entraîne une erreur de syntaxe à cause de *. Que dois-je faire pour que cela fonctionne?Recherche de la taille d'un pointeur

+6

Notez que vous devriez utiliser '"% zu "' pour imprimer les types 'size_t' (c'est-à-dire les valeurs renvoyées par' sizeof') plutôt que ""% d "'. C'est une différence pédant, mais vous ne voudriez pas voir un tableau de -3 éléments, n'est-ce pas? –

Répondre

9

Vous essayez actuellement de trouver la taille qui est à vide d'adresse. Si vous cherchez la taille d'un pointeur vide, essayez plutôt: sizeof (void *) à la place.

printf("pointer: %zu\n", sizeof(void*)); 

devrait faire ce que vous voulez. Utilisez% zu et non% d car le pointeur est une valeur non signée et non un nombre décimal. Edit: Quelque chose d'autre que je viens de penser pour la première fois, est-ce que% zu dépend du compilateur? Avons-nous besoin de faire les choses différemment sur l'architecture 32 bits ou 64 bits?

6
printf("pointer: %d\n", sizeof(void*)); 
Questions connexes