Erko schrieb:
> Welche Compare Funktion soll ich zB der FUnktion qsort geben?
Na eine, die zwei Strings nach den von dir gewünschten Sortierkriterien
vergleicht.
> Im Beispiel steht das hier:
> int compare (const void * a, const void * b)
> {
> return ( *(int*)a - *(int*)b );
> }
> Erstens: Ich verstehe nicht was sich dieser Rückgabewert eigentlich
> bringt (was er ergibt weiß ich)
Er ist das Vergleichsergebnis, das von qsort benutzt wird, um zu
entscheiden, ob zwei Elemente vertauscht werden sollen oder nicht.
Ein Rückgabewert >0 heißt, daß dein verlgeich den ersten Wert als
"größer" als den zweiten Wert betrachtet, <0 heißt, daß der erste Wert
kleiner ist. Wenn sie beide gleich sind, muß 0 rauskommen.
Vielleicht ist folgende für qsort äquivalente Variante besser
verständlich:
1 | int compare (const void * a, const void * b)
|
2 | {
|
3 | const int* Wert1 = (const int*)a;
|
4 | const int* Wert2 = (const int*)b;
|
5 |
|
6 | if (*Wert1 < *Wert2)
|
7 | return -1;
|
8 | else if (*Wert1 > *Wert2)
|
9 | return 1;
|
10 | else
|
11 | return 0;
|
12 | }
|
> Zweitens, ich habe andere Quellen im Internet, die andere Compares
> haben.
Na wenn man immer die selbe bräuchte, wäre das ganze ja recht sinnlos.
> Aber heh?? Wie soll das alles funktionieren?
Das ist eine etwas allgemein formulierte Frage.