Question : Comprendre la taille non définie de "void"
En programmation C, le mot-clé "void" représente une absence de type. Cela soulève la question : quelle est la taille de "void" ?
Réponse :
Le type "void" n'a pas de taille définie en C. Ce n'est pas un type valide pour les objets ou les pointeurs, donc tenter de l’utiliser comme tel entraînerait une erreur de compilation. Plus précisément, l'instruction :
void n;
n'est pas valide car elle tente de déclarer une variable de type void, ce qui n'est pas autorisé.
Extension : Allocation et arithmétique des pointeurs avec les pointeurs "void"
Bien que "void" n'ait pas de taille, il peut être utilisé comme type pour les pointeurs. Cependant, ces pointeurs ne pointent vers aucun type ou taille spécifique de données.
L'instruction :
void *p = malloc(sizeof(void));
results dans une erreur de compilation car essayer d'allouer de la mémoire pour un type "void" n'a aucun sens. La fonction malloc nécessite un type de données valide pour allouer de la mémoire.
Dans GCC, l'expression sizeof(void) est étonnamment évaluée à 1. Bien que cela puisse sembler attribuer une taille à "void", il s'agit simplement un détail d'implémentation sur lequel il ne faut pas se fier.
De plus, l'arithmétique du pointeur p sur un pointeur "void" n'est pas définie et ne doit pas être utilisée. En effet, le type de données pointées par p est inconnu, ce qui rend impossible de déterminer ce que signifierait l'incrémentation du pointeur.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3