ホームページ > バックエンド開発 > C++ > ポインターのサイズは常にポインターが指すデータ型と一致しますか?

ポインターのサイズは常にポインターが指すデータ型と一致しますか?

Linda Hamilton
リリース: 2024-12-12 19:44:10
オリジナル
902 人が閲覧しました

Do Pointer Sizes Always Match the Data Types They Point To?

ポインタ サイズについて

プログラミングでは、ポインタはメモリ アドレスを格納し、プログラムの他の部分のデータを参照するためによく使用されます。よくある質問: ポインターのサイズは、ポインターが指す型のサイズと一致しますか、それともポインターは常に固定サイズですか?

固定サイズ ポインター

ほとんどの場合、ポインタは参照する型に関係なく、固定サイズを持ちます。この固定サイズは、基礎となるシステムのアーキテクチャによって決まります。たとえば、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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート