Как работает функция qsort()?
void qsort (
void* base,
size_t num,
size_t size,
int (*compar)(const void*,const void*)
);
Как функция qsort получает доступ к "размеру" байта после адреса, чтобы получить следующий элемент?
Типографская вставка void*
в char*
?
1 ответ
Как функция qsort получает доступ к "размеру" байтов после базового адреса, чтобы получить следующий элемент? Типографская вставка
void*
вchar*
?
Предположение, присущее этому вопросу, заключается в том, что qsort
сам написан на C; это не должно быть. Давайте предположим, что это так.
Преобразование в char*
было бы типичным способом сделать это, да, либо с помощью явного использования оператора приведения, либо путем назначения base
к локальной переменной типа char*
,
GNU C позволяет вам напрямую добавлять целое число в указатель void, но это непереносимое расширение языка Си.
Если у вас есть вопрос о конкретной реализации, скажите, что за реализация.