一.void 在英文中作为名词的解释为 "空虚、空间、空隙",
而在 C 语言中,void 被翻译为"无类型",相应的void * 为"无类型指针"。
void * fun( ) ; //声明一个返回值是任意类型的指针 的函数fun()
void vfun( ) ; //声明一个没有返回值 的函数vfun()
二.对于void是无类型(不确定类型),无类型可以包含有类型
关于void函数
1.没有返回值的return语句只能用在返回类型是void的函数中。返回void的函数不要求非得有
return语句,因为在这类函数的最后一句后面会隐式地执行return
2.通常情况下,void函数如果想在它的中间位置提前退出,可以使用return语句。return的
这种用法有点类似于我们用break语句退出循环
代码举例:
void swap(int &v1,int &v2)
{
if(v1==v2)
{
return;
}//如果两个值相等,则不需要交换,直接退出
int tmp=v2;
v2=v1;
v1=temp;
//此处无需显式的return语句
}
三.关于void*是无类型指针(不确定类型指针),void*fun()可以返回一个任意类型的指针
(1)void *可以接受任何类型的赋值:
void *a = NULL;
int * b = NULL;
a = b;//a是void * 型指针,任何类型的指针都可以直接赋值给它,
//无需进行强制类型转换
//我们可以认为void就是一张白纸可以在上班写任何类型的数值。
(2)void *可以赋值给任何类型的变量 但是需要进行强制转换:
注意: void* 在转换为其他数据类型时,赋值给void* 的类型 和目标类型必须保持一致。
简单点来说:void* 类型接受了int * 类型的赋值后,这个void * 不能转化为其他类型,
必须转换为int *类型;
代码举例:
#include<iostream>
using namespace std;
int main()
{
int a=1;
int *p;//p是int*型指针
p=&a;
//int *p=&a;//p是int*型指针
void *p2=&a;//p2是void*型的指针
cout<<p<<" "<<*p<<endl;//输出0x70fdfc和1
cout<<(int *)p2<<" "<<*(int *)p2<<endl;//输出0x70fdfc和1
}