void指针是一种特殊的指针。例如:void *vp;

  且任何类型的指针都可以赋值给void指针,例如:


    void* vp;
    type* p;  // type指任意非void的类型
    vp = p;  // 无需转换
						

  但是void指针赋值给其他类型的指针时都需要进行转换,例如:


    void* vp;
    type* p;  // type指任意非void的类型
    p = (type*)vp;
						

  注意,void指针不能复引用,例如:


    void* vp;
    *vp  // 错误,void指针不能复引用
	
    type* p;// type指任意非void的类型
    *p      // 正确,普通指针可以复引用
						

  因为void指针只知道所指向的变量(对象)的起始地址,而不知道所指变量(对象)的大小,所以是无法正确引用的。


  void指针不能参与指针运算,除非进行强制转换,例如:


    void* vp;
    int i = 0;
    vp = &i;
    vp++;      // 错误,void指针不能参与指针运算
    (int*)vp++;// 正确,已对void指针进行强制转换