Я изучаю C от «C на K & R». Я проходил через раздел «Указатели функций». Был пример сортировки массива строк с помощью указателей на функции и указателей void (в частности, на стр. 100). У меня есть ясное понимание указателей на функции и указателей void.C указатели функции
Пример, приведенный здесь называет
qsort((void**) lineptr, 0, nlines-1,(int (*)(void*,void*))(numeric ? numcmp : strcmp));
И seemlessly использует пустое PTR, вроде как ниже для сравнения и обмена.
Я понимаю, что он принимает массив указателей, и каждый элемент сам по себе является указателем на пустоту. Как можно сравнивать, поменяйте пустоту ptr на другую.
void sort(void *v[],int i,int j)
{
id *temp;
temp = v[i];
v[i] = v[j];
v[j] = temp;
}
Может кто-нибудь объяснить концепцию этого.
При перестановке двух указателей, не изменять данные, которые он указывает в любом случае. – wimh
Конечно, вы не можете разыменовать void *, но здесь вы просто изменяете то, на что указывают указатели. – ameyCU
Действительно ли ваш код работает? –