Die Manpage des qsort(3)
Bibliotheksroutine gibt ein Beispiel für die Sortierung von Wörtern, die als Argumente in der Befehlszeile angegeben werden. Die Vergleichsfunktion lautet wie folgt:
static int
cmpstringp(const void *p1, const void *p2)
{
/* The actual arguments to this function are "pointers to
pointers to char", but strcmp(3) arguments are "pointers
to char", hence the following cast plus dereference */
return strcmp(* (char * const *) p1, * (char * const *) p2);
}
Aber was hier sortiert wird, sind die Elemente von argv
. Jetzt argv
ist ein Zeiger auf Zeiger von Zeichen, der auch als eine Tabelle von Zeigern auf Zeichen betrachtet werden kann.
Seine Elemente sind also Zeiger auf Zeichen, sollten also nicht die eigentlichen Argumente von cmpstringp
Zeiger auf Zeichen sein, und nicht "Zeiger auf Zeiger auf Zeichen"?