Обычно вы вводите тип void pointer
в указатель типа struct params
.Вы используете пустой указатель, потому что указатель void
может содержать адрес любого типа.Но вы не можете разыменовать пустой указатель, поэтому вам нужно набрать приведение к фактическому типу.
Пример:
Вы разрабатываете library
для предоставления функциональности стороннему приложениюи вы не хотите делиться определением struct param
с приложением.То же самое может быть достигнуто с помощью void pointer
, как показано ниже.
void* createParams()
{
struct params *passStruct = malloc(sizeof(*passStruct));
return (void *)passStruct;
}
, и приложение вызывает эту функцию для создания структуры Params
.
void *paramhandle = createParams();
, затем использует paramhandle
для вызоваestimatepartial
estimatepartial(paramhandle);
Используя void *
, вы абстрагировали определение struct params
.