ホームページ >バックエンド開発 >C++ >C言語でNear、Far、Hugeポインタを説明する

C言語でNear、Far、Hugeポインタを説明する

WBOY
WBOY転載
2023-09-14 15:13:021580ブラウズ

C言語でNear、Far、Hugeポインタを説明する

#メモリ モデルとセグメントに基づいて、ポインタは 3 つのタイプに分類されます。

    #Near ポインタ
  • Far ポインタ
  • Large pointer
Near pointer

  • は、64Kb のメモリ データ セグメント範囲内で動作するポインターです。

  • #このデータ セグメントを超えるアドレスにはアクセスできません。
  • ニア ポインタは、アドレス範囲の算術演算子を使用してインクリメントまたはデクリメントできます。
  • キーワードnearを使用すると、任意のポインタをnearポインタに設定できます。
  • 文法

構文は次のとおりです。

<data type> near <pointer definition>
<data type> near <function definition>

次のステートメントは、変数 s

char near *string;

Program のニア ポインタを宣言します。

次のプログラムは、ニア ポインターの使用法を示しています。

#include<stdio.h>
int main(){
   int number=50;
   int near* p;
   p=&number;
   printf("%d",sizeof(p));
   return 0;
}

出力

出力は次のとおりです-

2

Far pointer

    これはポインタです。異なるポインタ オフセットとセグメント アドレスを格納します。
  • 16 セグメントすべてにアクセスできます。

    far ポインタのアドレス範囲は 0 ~ 1MB です。
  • ポインタをインクリメントまたはデクリメントすると、オフセット部分のみが変化します。
  • 文法

構文は次のとおりです。

<data type> far <pointer definition>
<data type> far <function definition>

次のステートメントは、変数 s

char far *s;

Program の far ポインタを宣言します。

次のプログラムは、far ポインターの使用法を示しています。

#include<stdio.h>
int main(){
   int number=50;
   int far *p;
   p=&number;
   printf("%d",sizeof number);
   return 0;
}

出力

出力は次のとおりです。 -

4

大きなポインタ

    これは、次のようなサイズです。 far ポインタ ポインタのそれ。両方とも 32 ビット アドレスであるため。
  • ラージ ポインタは、セグメント ワーク ループの影響を受けることなくインクリメントできます。
  • 手順

次のプログラムは、ラージ ポインターの使用方法を示しています。

#include<stdio.h>
Int main(){
   Char huge *far *ptr;
   Printf("%d%d%d",sizeof(ptr),sizeof(*ptr),sizeof(**ptr));
   Return 0;
}

出力

出力は次のとおりです -

4 4 1

以上がC言語でNear、Far、Hugeポインタを説明するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はtutorialspoint.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。