C语言里的near跟far是什么意思

C语言里的near和far是什么意思?
不懂,求解释!C语言里的near跟far是什么意思

------解决方案--------------------
一般指的是远近指针。

这个好像用在准32位程序中的比较多吧。

------解决方案--------------------
什么环境,一般在单片机中常见,看 manual
------解决方案--------------------
32位系统中已经没有用了,16位才有用。
far 远跳转/指针,它会带一个段前缀。
near 没有段前缀
------解决方案--------------------
近指针、远指针,这是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。