Maison > développement back-end > C++ > le corps du texte

Les pointeurs ont-ils toujours la même taille en C ?

Mary-Kate Olsen
Libérer: 2024-10-28 22:42:02
original
589 Les gens l'ont consulté

 Do Pointers Always Have the Same Size in C  ?

Tous les pointeurs ont-ils la même taille en C ?

Cette question a fait l'objet de débats, certaines sources affirmant que tous les pointeurs ont la même taille tandis que d'autres soutiennent que les pointeurs peuvent varier en taille.

Selon la norme C, il est explicitement garanti que :

  • void a la même taille que char
  • les pointeurs qualifiés cv (par exemple, T const, T volatile, T const volatile) ont la même taille que T
  • Les pointeurs vers des types d'énumération avec le même type sous-jacent ont la même taille

Bien que la norme n'indique pas explicitement que tous les pointeurs ont la même taille, il est généralement vrai en pratique que les pointeurs vers tous les types de classe , les pointeurs de fonction, les pointeurs de membres de données et les pointeurs de membres de fonction ont la même taille.

Cependant, cette hypothèse n'est pas garantie à 100 %, car les compilateurs sont techniquement autorisés à jouer des tours. Par exemple, ils pourraient créer des pointeurs plus longs pour les classes qui commencent par un préfixe particulier ou s'ils décident d'implémenter un garbage collection pour ces classes.

Dans des scénarios pratiques, il est très peu probable que les compilateurs utilisent cette liberté. Par conséquent, les développeurs peuvent généralement supposer que les pointeurs vers différents types de classes et les autres types mentionnés ci-dessus auront la même taille. Pour fournir une assurance supplémentaire, une instruction static_assert peut être implémentée pour signaler les violations potentielles.

Cependant, dans les architectures segmentées avec des pointeurs proches et lointains, il est possible que ces types de pointeurs n'aient pas la même taille. Cela constitue une exception à la règle habituelle des pointeurs ayant des tailles uniformes.

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
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!