Possible Duplicate:
What's the difference between a null pointer and a void pointer?可能重复:空指针和空指针的区别是什么?
What is the difference between a pointer to void and a NULL pointer in C? Or are they the same?
指向void的指针和C中的空指针有什么区别?还是它们是一样的?
3 个解决方案
#1
13
In C, there is void
, void
pointer and NULL
pointer.
在C语言中,有void、void指针和NULL指针。
-
void
is absence of type. I.E. a function returning avoid
type is a function that returns nothing. - 空是没有类型。也就是说,返回void类型的函数是没有返回任何值的函数。
-
void
pointer: is a pointer to a memory location whose type can be anything: a structure, an int, a float, you name it. - 空指针:是指向内存位置的指针,其类型可以是任何类型:结构、int、浮点数,您可以命名它。
- A
NULL
pointer is a pointer to location0x00
, that is, no location. Pointing to nothing. - 空指针是指向位置0x00的指针,即没有位置。指向。
Examples:
例子:
void
function:
无效的功能:
void printHello()
{
printf("Hello");
}
void
pointer:
无效的指针:
void *malloc(size_t si)
{
// malloc is a function that could return a pointer to anything
}
NULL
pointer:
空指针:
char *s = NULL;
// s pointer points to nowhere (nothing)
#2
7
void
is a datatype. void*
is just a pointer to an undefined type. A void*
can be set to any memory location. A NULL pointer is a any pointer which is set to NULL (0).
空白是一种数据类型。void*只是一个指向未定义类型的指针。void*可以设置为任何内存位置。空指针是任何被设置为空(0)的指针。
So yes, they are different, because a void pointer is a datatype, and a NULL pointer refers to any pointer which is set to NULL.
所以,是的,它们是不同的,因为空指针是一个数据类型,空指针是指任何被设置为NULL的指针。
#3
5
Pointer to void is a pointer to an unspecified type. Ie. Just a pointer. It can still be a valid pointer, but we don't know what it points to (eg. A function might take a void pointer as a parameter, and then interpret the type according to a different parameter)
指向void的指针是指向未指定类型的指针。Ie。只是一个指针。它仍然可以是一个有效的指针,但是我们不知道它指向什么。函数可以将空指针作为参数,然后根据不同的参数解释类型)
NULL is an 'empty' pointer. Not valid, can be used to specify a pointer to nothing / not set. It is a value whilst void is a type.
NULL是一个“空”指针。无效,可用于指定指向无/未设置的指针。它是一个值,而void是一个类型。
#1
13
In C, there is void
, void
pointer and NULL
pointer.
在C语言中,有void、void指针和NULL指针。
-
void
is absence of type. I.E. a function returning avoid
type is a function that returns nothing. - 空是没有类型。也就是说,返回void类型的函数是没有返回任何值的函数。
-
void
pointer: is a pointer to a memory location whose type can be anything: a structure, an int, a float, you name it. - 空指针:是指向内存位置的指针,其类型可以是任何类型:结构、int、浮点数,您可以命名它。
- A
NULL
pointer is a pointer to location0x00
, that is, no location. Pointing to nothing. - 空指针是指向位置0x00的指针,即没有位置。指向。
Examples:
例子:
void
function:
无效的功能:
void printHello()
{
printf("Hello");
}
void
pointer:
无效的指针:
void *malloc(size_t si)
{
// malloc is a function that could return a pointer to anything
}
NULL
pointer:
空指针:
char *s = NULL;
// s pointer points to nowhere (nothing)
#2
7
void
is a datatype. void*
is just a pointer to an undefined type. A void*
can be set to any memory location. A NULL pointer is a any pointer which is set to NULL (0).
空白是一种数据类型。void*只是一个指向未定义类型的指针。void*可以设置为任何内存位置。空指针是任何被设置为空(0)的指针。
So yes, they are different, because a void pointer is a datatype, and a NULL pointer refers to any pointer which is set to NULL.
所以,是的,它们是不同的,因为空指针是一个数据类型,空指针是指任何被设置为NULL的指针。
#3
5
Pointer to void is a pointer to an unspecified type. Ie. Just a pointer. It can still be a valid pointer, but we don't know what it points to (eg. A function might take a void pointer as a parameter, and then interpret the type according to a different parameter)
指向void的指针是指向未指定类型的指针。Ie。只是一个指针。它仍然可以是一个有效的指针,但是我们不知道它指向什么。函数可以将空指针作为参数,然后根据不同的参数解释类型)
NULL is an 'empty' pointer. Not valid, can be used to specify a pointer to nothing / not set. It is a value whilst void is a type.
NULL是一个“空”指针。无效,可用于指定指向无/未设置的指针。它是一个值,而void是一个类型。