Question :
Peut-on déterminer la taille du vide de type C ou C ? Considérez le code suivant :
void *p = malloc(sizeof(void));
Extension : Si sizeof(void) renvoie 1 dans GCC, le pointeur p s'incrémentera-t-il à 0x2346 après p si p détenait initialement 0x2345 ?
Réponse :
Le type vide manque fondamentalement de taille, ce qui rend l'expression sizeof(void) dénuée de sens et conduit à une erreur de compilation. En C , c'est strictement interdit.
Découverte inattendue :
Étonnamment, lors de la compilation en GNU C, sizeof(void) donne 1. Cependant, ce comportement est limité à GNU C et non observé en C ou autre implémentations.
Implications :
Malgré la valeur de retour inattendue dans GNU C, il est crucial de noter que void reste un type sans taille. Les pointeurs vers void, comme p dans l'exemple, sont de véritables pointeurs et peuvent être incrémentés comme n'importe quel autre pointeur. L'opération d'incrémentation dans la question d'extension se comportera comme prévu, p pointant vers la prochaine adresse mémoire disponible.
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!