对VC中的void理解

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是一个不能定义实例的抽象类型

posted @ 2011-12-26 00:30  sudigua  阅读(298)  评论(0编辑  收藏  举报