C的傻问题

来源:百度知道 编辑:UC知道 时间:2024/05/27 00:02:26
void far setbkcolor( int color)

这个什么意思? VOID是不是定义一个没有类型的函数? 那么far呢?
详细点解释啊?解释的好加分

使用调色板设置当前的背景颜色
far 是指远程指针

在32位的操作系统下,地址是32位的,不像Dos的实模式要用分段的方法。
near指针的长度是16位的,所以可指向的地址范围是64K字节,通常说near指针的寻址范围是64K。
far指针的长度是32位,含有一个16位的基地址和16位的偏移量,将基地址乘以16后再与偏移量相加,(所以实际上far指针是20位的长度。)即可得到far指针的1M字节的偏移量。所以far指针的寻址范围是1M字节,超过了一个段64K的容量。例如一个far指针的段地址为0x7000,偏移量为0x1244,则该指针指向地址0x71224.如果一个far指针的段地址是0x7122,偏移量为0x0004,则该指针也指向地址0x71224。

设置当前背景色:void far setbkcolor(int color);
设置当前作图色:void far setcolor(int color);
void的含义
void的字面意思是“无类型”,void *则为“无类型指针”,void *可以指向任何类型的数据。
void几乎只有“注释”和限制程序的作用,因为从来没有人会定义一个void变量,让我们试着来定义:
void a;
这行语句编译时会出错,提示“illegal use of type 'void'”。不过,即使void a的编译不会出错,它也没有任何实际意义。
void真正发挥的作用在于:
(1) 对函数返回的限定;
(2) 对函数参数的限定。
众所周知,如果指针p1和p2的类型相同,那么我们可以直接在p1和p2间互相赋值;如果p1和p2指向不同的数据类型,则必须使用强制类型转换运算符把赋值运算符右边的指针类型转换为左边指针的类型。

far是用于存储寻址的远距离寻址问题,near用于16位寻址;far用于20位寻址,这是很多c/c++书籍上提到的。我们知道16位仅仅能寻址64K,而现在的存储容量非常大,在c/c++、VC中我们编程用得也少

near指针的长度是16位