ポインタ サイズについて
プログラミングでは、ポインタはメモリ アドレスを格納し、プログラムの他の部分のデータを参照するためによく使用されます。よくある質問: ポインターのサイズは、ポインターが指す型のサイズと一致しますか、それともポインターは常に固定サイズですか?
固定サイズ ポインター
ほとんどの場合、ポインタは参照する型に関係なく、固定サイズを持ちます。この固定サイズは、基礎となるシステムのアーキテクチャによって決まります。たとえば、32 ビット アーキテクチャのマシンでは、ポインターが指すデータのサイズに関係なく、ポインターは通常 32 ビットのメモリを占有します。
実装例
次の C コード スニペットを考えてみましょう:
int x = 10; int * xPtr = &x; // Pointer to an integer char y = 'a'; char * yPtr = &y; // Pointer to a character
これをコンパイルして実行すると、コード:
std::cout << sizeof(x) << "\n"; // Size of integer std::cout << sizeof(xPtr) << "\n"; // Size of integer pointer std::cout << sizeof(y) << "\n"; // Size of character std::cout << sizeof(yPtr) << "\n"; // Size of character pointer
出力はおそらく次のようになります:
4 8 // Pointer size on a 64-bit machine 1 8 // Pointer size on a 64-bit machine
ご覧のとおり、両方のポインター (xPtr と yPtr) が次を指しているにもかかわらず、サイズは同じです。異なるサイズのデータ (整数と
例外
ポインターは通常固定サイズですが、いくつかの例外があります。たとえば、古い 16 ビット Windows システムでは、16 ビットと 32 ビットの両方のポインターがありました。ただし、最新のデスクトップ オペレーティング システムでは、一般的に、特定の実行可能ファイル内のポインターのサイズは均一であると想定して問題ありません。
以上がポインターのサイズは常にポインターが指すデータ型と一致しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。