Maison > développement back-end > C++ > Tous les pointeurs en C ont-ils la même taille ? Une plongée approfondie dans les complexités et les nuances de la taille du pointeur en C .

Tous les pointeurs en C ont-ils la même taille ? Une plongée approfondie dans les complexités et les nuances de la taille du pointeur en C .

Linda Hamilton
Libérer: 2024-10-26 09:36:03
original
1035 Les gens l'ont consulté

Do all pointers in C   have the same size? A deep dive into the complexities and nuances of pointer size in C  .

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

La question de savoir si tous les pointeurs en C ont la même taille a été soumise à débat. Alors que certaines sources affirment que les pointeurs ont toujours la même taille, d'autres suggèrent que différents types de pointeurs peuvent avoir des tailles différentes.

Tailles garanties dans la norme C

La norme C garantit explicitement que :

  • void a la même taille que char.
  • T const, T volatile et 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.

Considérations pratiques sur la taille

En pratique, les pointeurs vers tous les types de classes et types de fonctions ont généralement la même taille. En effet :

  • Les compilateurs doivent déterminer la taille d'un pointeur vers un type de classe incomplet sans connaître son implémentation.
  • reinterpret_cast peut être utilisé pour convertir entre différents types de pointeurs de fonction sans perdre informations.

Exception : les architectures segmentées

Sur les architectures segmentées, les pointeurs proches et lointains peuvent avoir des tailles différentes.

Raisons pour autoriser des tailles non uniformes ?

La norme C permet techniquement aux types de pointeurs d'avoir des tailles différentes pour les cas pathologiques. Cependant, dans les applications pratiques, de tels cas sont rares et n'apportent aucun avantage significatif.

Conclusion

Bien qu'il soit tentant de supposer que tous les pointeurs en C ont la même taille, ce n'est pas garanti par la norme. Cependant, dans la plupart des scénarios pratiques, tous les pointeurs auront la même taille, comme indiqué dans la discussion ci-dessus.

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