当前位置: 代码迷 >> C语言 >> 什么是far 函数?
  详细解决方案

什么是far 函数?

热度:289   发布时间:2006-08-01 13:42:28.0
什么是far 函数?
例如函数:
void far initgraph(int far *drive)
其中,第二个far是一个远程指针,不知第一个far在此的意义是什么?怎样解释?谢谢了!
搜索更多相关的解决方案: far  函数  

----------------解决方案--------------------------------------------------------
以下是引用han2y在2006-8-1 13:42:28的发言:
例如函数:
void far initgraph(int far *drive)
其中,第二个far是一个远程指针,不知第一个far在此的意义是什么?怎样解释?谢谢了!

第一个far应该只是个远程型修饰符,按照我的理解,就是函数的入口地址对应远程堆中的一块比较大的内存.可能是由于函数本身所占空间太大所致.


----------------解决方案--------------------------------------------------------

还有别的解释吗


----------------解决方案--------------------------------------------------------
ፋድስፋስፋስድፍስድቭሳአስችችችችችችድሳፋድፋስድፍፋድፍጃስድፍናስግንወጋ
ፋድስፋሆኢጋህንገንፍቭላስፍንጅፍድፋፍጃልድጅፍዊፍን/ቃ
ቅ]ግቅግቀንግድፍምዝ/ጋ
~
~
~


----------------解决方案--------------------------------------------------------

好象是长跳指针


----------------解决方案--------------------------------------------------------
far指针的长度是32位,含有一个16位的基地址和16位的偏移量,将基地址乘以16后再与偏移量相加,(所以实际上far指针是20位的长度。)即可得到far指针的1M字节的偏移量。所以far指针的寻址范围是1M字节,超过了一个段64K的容量。例如一个far指针的段地址为0x7000,偏移量为0x1244,则该指针指向地址0x71224.如果一个far指针的段地址是0x7122,偏移量为0x0004,则该指针也指向地址0x71224。

如果没有指定一个指针是near或far,那么默认是near。所以far指针要显式指定。far指针工作起来要慢一些,因为每次访问一个far指针时,都要将数据段或程序段的数据交换出来。另外,far指针的运算也比较反常,例如上面讲到的far指针指向同一个地址,但是比较的结果却不相同。

----------------解决方案--------------------------------------------------------
还是不太明白
----------------解决方案--------------------------------------------------------
  相关解决方案