|
unsigned char near *np;farポインターは、このうちfarを指定したときに使われるポインターである。
unsigned char far *fp;
unsigned char huge *hp;
unsigned char near *np;この場合の動作は実装依存であり、結果については未定義である。殆どのCコンパイラーはセグメント拡張するが、しない可能性もある。
unsigned char far *fp;
fp = (unsigned char far *)np;
unsigned char far *fp;この場合、abcd:0123 というアドレスに対するfarポインターとなる。このポインターを使えば、このアドレスに対して何かを書き込むことができる。
fp = (unsigned char far *)0xabcd0123;
*fp = 0x00;
unsigned char far *fp;この場合の動作は実装依存であり、結果については未定義である。
unsigned long l;
l = (unsigned long)fp;
unsigned char far *fp;加減算はオフセット部分のみに実施される可能性が高い。演算におけるオーバーフロー/アンダーフロー時にセグメント部分に影響を与えない可能性が高い。(実装依存)
fp = (unsigned char far *)0xaaaa0000; // fp = aaaa:0000
--fp; // fp = aaaa:ffff