可能重复:
What's the difference between a null pointer and a void pointer?
指向void的指针和C中的NULL指针有什么区别?或者他们是一样的吗?
答案 0 :(得分:13)
在 C 中,有void
,void
指针和NULL
指针。
void
缺少类型。 I.E.返回void
类型的函数是一个不返回任何内容的函数。void
指针:是一个指向内存位置的指针,其类型可以是任何类型:结构,int,浮点数,你可以命名它。NULL
指针是指向位置0x00
的指针,即没有位置。什么都没有。示例:
void
功能:
void printHello()
{
printf("Hello");
}
void
指针:
void *malloc(size_t si)
{
// malloc is a function that could return a pointer to anything
}
NULL
指针:
char *s = NULL;
// s pointer points to nowhere (nothing)
答案 1 :(得分:7)
void
是一种数据类型。 void*
只是指向未定义类型的指针。 void*
可以设置为任何内存位置。 NULL指针是任何指针,设置为NULL(0)。
所以是的,它们是不同的,因为void指针是一种数据类型,而NULL指针指的是任何设置为NULL的指针。
答案 2 :(得分:5)
指向void的指针是指向未指定类型的指针。 IE浏览器。只是一个指针。它仍然可以是一个有效的指针,但我们不知道它指向的是什么(例如,一个函数可能将一个void指针作为参数,然后根据不同的参数解释该类型)
NULL是一个'空'指针。无效,可用于指定指向无/未设置的指针。这是一个价值,而虚空是一种类型。