Maison > développement back-end > C++ > Quelle est la taille de « void » en C ?

Quelle est la taille de « void » en C ?

Mary-Kate Olsen
Libérer: 2024-11-19 17:25:03
original
844 Les gens l'ont consulté

What is the Size of

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;
Copier après la connexion

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));
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal