我在查c语言图形库函数时,原形里含有的“far”表示什么意思?

来源:百度知道 编辑:UC知道 时间:2024/05/25 19:33:37
例如画线函数原形 void far line(int x0,int y0,int x1,int y1) 之中的”far“代表的含义?

哈哈 想了半天才想起来far是和near对应的,就是一般程序的函数调用都在64k地址范围内的,就是16位寻址就够了,但是当代码比较庞大时,16位就可能不够了.far就代表32位寻址,函数的本质就是个地址,指针的本质也是个地址,所以就有了寻址的问题,为了确认我还搜了一下呵呵 参见指针的:)

<P>    8、near指针和far指针<BR>在DOS下(实模式)地址是分段的,每一段的长度为64K字节,刚好是16位(二进制的十六位)。<BR>near指针的长度是16位的,所以可指向的地址范围是64K字节,通常说near指针的寻址范围是64K。<BR>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指针指向同一个地址,但是比较的结果却不相同。