首页  >  文章  >  后端开发  >  C 中所有指针的大小都相同吗?深入探讨 C 中指针大小的复杂性和细微差别。

C 中所有指针的大小都相同吗?深入探讨 C 中指针大小的复杂性和细微差别。

Linda Hamilton
Linda Hamilton原创
2024-10-26 09:36:03935浏览

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

C 中所有指针的大小是否相同?

C 中所有指针是否具有相同大小的问题一直受到辩论。虽然一些消息来源声称指针始终具有相同的大小,但其他消息来源则认为不同的指针类型可以具有不同的大小。

C 标准中的保证大小

C 标准显式保证:

  • void 与 char 具有相同的大小。
  • T const、T volatile 和 T const volatile 与 T 具有相同的大小。
  • 指向具有相同底层类型的枚举类型的指针具有相同的大小。

实际大小注意事项

实际上,指向所有类类型和函数类型的指针通常具有相同的大小。这是因为:

  • 编译器必须在不知道其实现的情况下确定指向不完整类类型的指针的大小。
  • reinterpret_cast 可用于在不同函数指针类型之间进行转换而不会丢失信息。

例外:分段架构

在分段架构上,近指针和远指针可能具有不同的大小。

原因允许非统一大小?

C 标准从技术上讲允许指针类型对于病理情况具有不同的大小。然而,在实际应用中,这种情况很少见,并且没有显着的好处。

结论

虽然很容易假设 C 中的所有指针具有相同的大小,标准不保证这一点。然而,在大多数实际场景中,所有指针都将具有相同的大小,如上面的讨论所述。

以上是C 中所有指针的大小都相同吗?深入探讨 C 中指针大小的复杂性和细微差别。的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn