Описание тега void-pointers

Указатель void (void *) в C и C++ - это указатель, указывающий на ячейку памяти без указанного типа.

Пустой указатель (void*) в c и C++ - это указатель, указывающий на ячейку памяти без указанного типа. Аvoid * обычно используется для обмена указателями, когда некоторая вызываемая функция может не заботиться о типе аргумента, который она получает - например, функции, которые работают с необработанной памятью (например, realloc а также bzero) и функции, которые передают указатель без необходимости обращаться к нему (например, обратные вызовы GTK+).

В C использованиеvoid *считается идиоматическим до тех пор, пока с указателем не выполняются неопределенные операции (такие как разыменование его или выполнение над ним арифметики указателя), поскольку в C отсутствуют типобезопасные обобщения. Если не работают с библиотеками C, пользователям C++ следует избегатьvoid * и используйте вместо них шаблоны, так как компиляторы могут обнаруживать использование шаблонов, которые не являются типобезопасными.

Обратите внимание, что в стандартном C вы не можете выполнять арифметические операции с void *; компилятор GNU C допускает такую ​​арифметику как (непереносимое) расширение.