Использование многих указателей в функции - PullRequest
0 голосов
/ 01 декабря 2019

Как они используют указатели в функции сравнения.

Я не мог понять.

Может кто-нибудь объяснить мне это.

Функция: -

int compare (const void *a, const void * b) 
{ 
    return ( (*(Box *)b).d * (*(Box *)b).w ) - 
           ( (*(Box *)a).d * (*(Box *)a).w ); 
} 

Ссылка: https://www.geeksforgeeks.org/box-stacking-problem-dp-22/

1 Ответ

0 голосов
/ 01 декабря 2019
  1. (Box *)b это тип приведения из void в структуру Box.
  2. (*(Box *)b).d это разыменование из указателя структуры Box. Таким образом, вы можете обработать структуру как экземпляр, а затем получить значения полей структуры как b.d. Другой вариант может заключаться в том, чтобы использовать указатель и избегать разыменования с помощью: b->d.

В конце функция сравни выполняет: (d w) - (д * 1 014 * ш)». Если результат равен 0, тогда сравнение означает, что обе структуры имеют одинаковые значения.

PD. В (2): не забывайте, что вы получаете параметр в качестве указателя, и эта реализация разыменовывает его как (*b).d

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