Понимание структуры - PullRequest
       5

Понимание структуры

0 голосов
/ 20 сентября 2018

Так что я понимаю основы структуры или так я думал.Наш учитель сегодня опубликовал некоторый код и не совсем его объяснил.Вот код.

//declaring struct
struct params{
     int var;
     int var2;
     int var3;
};

//.c for function(part that matters)  
void *estimatepartial(void *info) {

     struct params *params = (struct params*) info;

Я получаю то, что делает остальная часть кода.Я не видел

struct params *params = (struct params*) info;

до того, что я помню.Если бы кто-то мог объяснить мне, что это делает, или, по крайней мере, как это называется, чтобы я мог найти это, я был бы признателен.

То, что я пробовал:

  • Поиск сайтов по инициализации структуры
  • объявление структур в Интернете
  • просмотр случайных примеров структуры в Интернете

1 Ответ

0 голосов
/ 20 сентября 2018

Обычно вы вводите тип 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...