void从字面理解是无类型
他只要用于:
1.对函数返回的限定;
2.对函数参数的限定。
下面举几个例子来说明void关键字的一些常见问题
[第一种]
我们知道两个指针之间可以相互赋值,但必须是同种类型
比如:
1: float *p1;
2: int *p2;
3:
4: p1=p2//这个时候将会报错,cant conver int to float
5:
6: //---------正确的写法如下(进行强转)------
7: p1=(int *)p2;
但是如果是void类型的指针,就无需进行强转,任何类型的指针都可以给他赋值
1: void *p1;
2: int *p2;
3:
4: p1=p2;//正常执行
但是相反的,void类型的指针就不能赋值给其他类型的指针
[第二种]
我们知道vc和pascal不同,pascal的函数和过程有明显的关键字区别,如
函数为function
过程为procedure
函数是有返回值的,过程无
但是vc里面没,所以这个时候就需要void了
为了让我们的代码易读性和健壮性更好,无返回值的函数(也就是过程)必须指明为void类型函数
void是一种抽象的类型,他即可以是任何类型的数值,这是他的优点,但同时又是他的局限性,以为他无自己的类型,好比人妖,既不是男也不是女,但他又是男又是女
所以void是一个不能定义实例的抽象类型