ポインタのサイズは、コンパイルするアプリケーションの種類によって異なります。
ポインタは32-bit unsigned int、メモリ位置を格納するため、32ビットアプリケーションのに似ています。
アプリケーションがアプリケーションの場合、メモリ位置を格納するのに十分な大きさである必要があるためN-bit、ポインタのサイズは長くなります。N bits
アプリケーションを実行できるすべてのN-bitコンピューターにN-bitは、RAM制限があり2^N bytesます。これにより、最大のメモリロケーションIDがに等しくなります2^N - 1(0x00000000有効なメモリアドレスであるため)。
2^N - 1はバイナリで表す必要N bitsがあります。私の友人は、32ビットアプリケーションでポインタのサイズが4バイトである理由です。
例として単純化のためのアプリケーションを取り上げ3-bitます:(私はむしろ多数を扱いたくない)
3-bitマシン上で実行されていると仮定しましょう。はで2^3 - 12進数で表すことができる最大数である3 bitsため、システムが処理できる最大メモリは2^3バイトになります。(これらは符号なしです。負のメモリアドレスは存在しません)
可能なメモリアドレスは次のとおりです。
0x0(バイナリ表現000:)
0x1(バイナリ表現001:)
0x2(バイナリ表現010:)
0x3(バイナリ表現011:)
0x4(バイナリ表現100:)
0x5(バイナリ表現101:)
0x6(バイナリ表現110:)
0x7(バイナリ表現111:)
したがって、このような場合、メモリアドレスを指すポインタが必要になります3 bits。
に置き換え3て32ください。これは、ここで行っていることに適用されます。
(やり過ぎの答えは多いですか?はい。なぜですか?退屈だったからです。)