永发信息网

什么是 “near” 和 “far” 指针?

答案:3  悬赏:0  手机版
解决时间 2021-04-03 11:45
  • 提问者网友:一抹荒凉废墟
  • 2021-04-02 11:44
什么是 “near” 和 “far” 指针?
最佳答案
  • 五星知识达人网友:渊鱼
  • 2021-04-02 12:35
近指针、远指针,这是16位CPU造就的怪胎。32位以上的CPU没这玩意。

16位CPU(主要指80386和80486)内部数组总线为16位,地址总线为24位。这就意味着一个字(16bit)存不下一个地址,要用到两个字。习惯把高位字称为段地址,低位字称为偏移地址。

程序运行时,OS会给程序分配几个内存段供程序使用,主要的有代码段(CS)、数据段(DS)、堆栈段(SS)。根据不同的编译模式这几个段可能重合。

当指针指向的地址与数据段的段地址相同(即处于数据段内),这时可以不记录段地址而仅记录偏移地址(只需16bit)。这种指针称为近指针(near指针)。

当指针指向的地址与数据段的段地址不同(即处于数据段外),这里不仅要记录偏移地址还要记录段地址(共需32bit)。这种指针称为远指针(far指针)。

可以自己测试:
sizeof(int near*)和sizeof(int far*)的返回值分别是2和4。
全部回答
  • 1楼网友:平生事
  • 2021-04-02 14:30
如今, 它们差不多被废弃了; 它们肯定于特定系统有关。如果真的要知道,参阅针对 DOS 或 Windows 的编程参考资料。
  • 2楼网友:西风乍起
  • 2021-04-02 13:06
near的英文意思是附近的,指针就是近处的;far是远的意思
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯