Maison >développement back-end >C++ >Les pointeurs ont-ils toujours la même taille en 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 :
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!