C 中所有指针的大小都相同吗?
问题是 C 中的所有指针是否共享统一的大小。虽然人们经常认为,C 标准对这个问题提供了明确的见解。
C 标准规范
C 标准明确保证:
实际注意事项
实际上,指向类类型的指针通常保持相同的大小。这是因为编译器必须在不完全定义 T 的情况下确定 T* 的大小。虽然编译器在调整指针大小方面具有一定的灵活性,但在现实场景中很少使用。
此外,函数指针、指向数据成员的指针和指向函数成员的指针通常具有相同的大小。这允许在这些指针类型之间进行无缝的重新解释转换。
异常
分段架构中出现一个值得注意的异常,其中近指针和远指针的大小可能不同。这种情况违反了指针大小统一的通常规则。
结论
C 标准阐明了 void* 和 cv 限定的指针具有统一的大小。虽然指向不同类型的指针通常继承相同的大小,但实际考虑表明,指向类类型的指针、函数指针和指向数据成员的指针都共享统一的大小。然而,分段架构存在一个例外,近指针和远指针可能具有不同的大小。
以上是C 中所有指针的大小都相同吗?的详细内容。更多信息请关注PHP中文网其他相关文章!