C言語ポインタの far と near の違い。

C言語ポインタの far と near の違い。

-far と near は MS-DOSの仕様
--unsigned char far *f; // メモリ上の実際のアドレスを表わす
--unsigned char near *n; // 特定の番地を基準とした値
--両者のポインタ変数のサイズは異なる。
--スモールモデルでは near
--ラージモデルでは far

-参考: C MAGAZINE 1992年8月号 実践Cプログラミング入門 第5回 配列とポインタ

-CQ出版 - TRY!PC - コンピュータ用語の基礎知識 - 3.C/C言語
--http://www.cqpub.co.jp/try/kijidb/yougo/san.htm
--->farポインタはパソコンで使われている,Intel社の80x86系のCPUに独特の概念です.80x86系CPUは16ビットのレジスタで64Kバイトを超えるメモリをインデックスするために,メモリをセグメントに分け,セグメント番号とセグメント内の相対位置(オフセット)の両方で一つのメモリをポイントします.通常のプログラミングでも,Windowsプログラミングでも,コンパイラのラージ・モデルおよびコンパクト・モデルを選ぶと,自動的にポインタがfarとなるので,注意点は64Kバイトの境界を意識するくらいで,普段はテクニックを必要としません.問題は,スモール・モデルとラージ・モデルが混在する場合に起こります.
--->先に述べたように,Intel社の386以上のCPUの汎用レジスタは32ビットとしても使えるので,プログラミングも32ビット・レジスタによるCOM モデル(フラット・モデル)に移行しつつあります.farとnearポインタで今ほど悩むことは,今後はなくなるでしょう.