C 中所有指针的大小都相同吗?
在世界上在C语言中,指针在管理内存和访问数据方面起着至关重要的作用。但它们都遵守相同的尺寸限制吗?令人惊讶的是,答案既是肯定的,也是否定的。
C 标准的立场
虽然很容易假设所有指针由于其作为内存地址的固有性质而共享相同的大小,但 C 标准明确描述了该假设成立的某些情况:
实际情况< ;/p>
实际上,指向类类型的指针通常遵循相同的大小限制。原因在于标准要求即使类类型不完整,仍然可以获得其指针类型的大小。这对编译器施加了限制,迫使它们在不完全了解类的内部结构的情况下确定指针类型的大小。
虽然编译器保留引入大小差异的灵活性,例如根据类前缀区分指针,这种做法在现实场景中并不常见。
在大多数情况下,以下大小等式在实践中也成立:< ;/p>
这些相等性源于重新解释某些指针类型之间的转换而不会丢失信息的能力。虽然编译器在技术上可以引入填充变化,但这样做没有实际的理由。
规则的例外
但是,在具有“近”和“远”指针的分段架构中,您可能会遇到大小差异。这种与一般规则的背离是一个值得注意的例外。
总之,虽然 C 标准允许指针大小变化的可能性,但在实际应用中,大多数指针都符合相同的尺寸限制。这种一致性简化了内存管理并增强了代码可读性。
以上是C 中所有指针的大小都相同吗? 令人惊讶的答案。的详细内容。更多信息请关注PHP中文网其他相关文章!