char FAR * h_name中的FAR

FAR 是16位系统时候的概念了,表明远指针的意思。指针

近指针是16位的指针,它只表示段内的偏移地址,于是只能对64k字节数据段内地址进行存取。内存

  如 char near *p;编译器

  p=(char near *)0xffff;编译

  远指针是32位指针,它表示段地址:偏移地址,如定义远程指针p指向B500段的2号地址,即B500:0002,则可写做:变量

  char far *p;数据

  p=(char far *)0xB5000002;远程

  所以,远指针能够进行跨段寻址,能够访问整个内存的地址。系统

     16位系统有远近指针之分的环境中,得告诉编译器指针变量h_name强制使用远指针方式。由于16位系统寻址范围只有2^16=64K,因此用FAR指针,再加上16位,高16位存放的是变量的段地址,低16位存放变量的段内偏移。

相关文章
相关标签/搜索