ホームページ  >  記事  >  バックエンド開発  >  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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。