void指针和NULL指针有什么区别?

时间:2010-11-07 02:53:51

标签: c++ c

  

可能重复:
  What's the difference between a null pointer and a void pointer?

指向void的指针和C中的NULL指针有什么区别?或者他们是一样的吗?

3 个答案:

答案 0 :(得分:13)

C 中,有voidvoid指针和NULL指针。

  1. void 缺少类型。 I.E.返回void类型的函数是一个不返回任何内容的函数。
  2. void指针:是一个指向内存位置的指针,其类型可以是任何类型:结构,int,浮点数,你可以命名它。
  3. NULL指针是指向位置0x00的指针,即没有位置。什么都没有。
  4. 示例:

    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是一个'空'指针。无效,可用于指定指向无/未设置的指针。这是一个价值,而虚空是一种类型。