void与NULL详解

void 是 “空”类型(无值型),意思是这种类型的大小无法确定。

并不存在void类型的对象,所以也就不能声明void类型的对象或者将sizeof()运算符用于void类型,C++/C语言不能对一个大小未知的对象直接操作。

 

void 通常用来定义函数的返回类型,参数列表(无参)或者void指针。

 

void指针可以作为通用指针,因为它可以指向任何类型的对象。

 

void指针与NULL指针值之间的区别:

NULL是可以赋值给任何类型指针的值0,在C语言中它的类型为void*,而在标准的C++语言中由于允许从0到任何指针类型的隐式转换,因此NUll就是整数0.

即:

#ifdef __cplusplus

#define NULL 0

#else

#define NULL ((void*)0)

#endif

一个void*类型的指针是一个合法的指针,常用于函数参数中来传递一个函数与其调用者之间约定好的类型的对象地址,例如在线程函数中;而一个值等于NULL的指针虽也是一个合法的指针,但不是一个有效的指针。

posted @ 2016-01-16 21:35  米罗西  阅读(906)  评论(0编辑  收藏  举报