Question : Comprendre la taille non définie de "void"
En programmation C, le mot-clé "void" représente une absence de type. Cela pose 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;
est invalide car elle tente de déclarer une variable de type vide, ce qui n'est pas autorisé.
Extension : allocation et arithmétique de pointeur avec " 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));
entraîne une erreur de compilation car essayer d'allouer de la mémoire pour un "vide " le type est absurde. 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.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!