C のポインター サイズを理解する
「ポインターのサイズは、ポインターが指す型のサイズに依存するのか」という疑問が生じます。それともポインタは常に固定サイズを維持するのでしょうか?」重複した質問の基礎に基づいて、この概念を詳しく見てみましょう。
C では、ポインターは通常、固定サイズを持ちます。 32 ビット実行可能ファイルでは、通常、32 ビットを占有します。ただし、古いバージョンの Windows など、16 ビット ポインターと 32 ビット ポインターを区別する必要がある例外も存在します。
次のコード スニペットを考えてみましょう。
int x = 10; int *xPtr = &x; char y = 'a'; char *yPtr = &y; std::cout << sizeof(x) << "\n"; std::cout << sizeof(xPtr) << "\n"; std::cout << sizeof(y) << "\n"; std::cout << sizeof(yPtr) << "\n";
この中でこのシナリオでは、出力は次のようになります:
ポインタは通常、サイズは一定であるため、コード内でこの仮定に依存するのは賢明ではありません。プログラムが特定のサイズのポインターに依存している場合は、常に明示的に検証してください。
関数ポインターは注目すべき例外です。それらのサイズは、特定のシステムまたはコンパイラで採用されている呼び出し規則に応じて異なります。関数ポインターの詳細については、「Jens」によって提供された応答を参照してください。
以上がC のポインターは、指すデータ型に関係なく固定サイズですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。