void含义
void即“无类型”,void*为无类型指针,可以指向任何数据类型。可以将其理解为万能指针。
void限定作用
void几乎只有限制程序的作用。其限定作用体现在:
- 对函数返回的限定
- 对函数参数的限定
注意:在C语言中,如果函数不加返回值限定符,则默认为int类型而不是void类型:
add(inta,intb)
{
return a+b;
}
void作为函数参数表示这个函数不接受任何参数
int function(void)
{
return1;
}
可以看出void不能代表一个真实的变量。可以理解为是一种泛型的符号,但是却没有泛型的数据。
void*修饰作用
如果函数的参数可以是任意类型的指针,可以将其声明为void*。
如内存操作函数:
void * memcpy(void*dest,constvoid*src,size_tlen);
void * memset(void*buffer,intc,size_tnum);
这里可以理解为万能指针,可以接受任何类型的参数。
也体现了内存操作函数的意义。因为你其操作的对象仅仅是一片内存,而不论这片内存是什么类型。
NULL指针与Void*指针
再次注意:void只具有泛型作用。void* 指针只是说明可以接受任何类型的参数,在使用时赋值。
而NULL可以理解为一个常量,其值为0。
编译以下代码:
#include <iostream>
using namespace std;
int main(void)
{
int *pNull = NULL;
void *pvoid;
cout << pNull << endl;
cout << pvoid << endl;
system("pause");
return 0;
}
编译结果为:
使用了未初始化的局部变量“pvoid”
注释后运行
#include <iostream>
using namespace std;
int main(void)
{
int *pNull = NULL;
//void *pvoid;
cout << pNull << endl;
//cout << pvoid << endl;
system("pause");
return 0;
}
结果为:
00000000