2010-11-07 2 views
7

Можно создать дубликат:
What's the difference between a null pointer and a void pointer?В чем разница между указателем void и указателем NULL?

В чем разница между указателем к мочеиспусканию и указатель NULL в C? Или они одинаковы?

+1

Точный дубликат [В чем разница между нулевым указателем и указателем на пустоту?] (Http://stackoverflow.com/questions/3581585/whats-the-difference-between-a-null-pointer-and-a-void -указатель). Пожалуйста, используйте поиск, прежде чем отправлять вопросы. – qrdl

ответ

7

void является типом данных. void* - это просто указатель на неопределенный тип. A void* можно установить в любое место памяти. Указатель NULL - это любой указатель, который установлен в NULL (0).

Да, они разные, поскольку указатель void является типом данных, а указатель NULL ссылается на любой указатель, который установлен в NULL.

5

Указатель на void является указателем на неуказанный тип. То есть. Просто указатель. Он все равно может быть действительным указателем, но мы не знаем, на что он указывает (например, функция может принимать указатель на пустоту как параметр, а затем интерпретировать тип в соответствии с другим параметром)

NULL - это «пустой» указатель. Недействительно, может использоваться для указания указателя на ничего/не заданного. Это значение, в то время как void является типом.

13

В С есть void, void указатель и указатель NULL.

  1. void является отсутствие типа. И.Е. функция, возвращающая тип void, - это функция, которая ничего не возвращает.
  2. void Указатель: указатель на ячейку памяти, тип которой может быть любым: структура, int, float, вы называете это.
  3. A 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) 
Смежные вопросы