Einen wunderschönen guten Morgen,
Mit den Sternchen wird ein Zeiger auf einen Adressbereich im Speicher dereferenziert. D. h. (im Prinzip) du übergibst deiner Funktion eine Adresse im Speicher. Mit den Sternchen kannst du dann auf den Inhalt der Adresse zurückgreifen. Da du Zeiger noch nicht kennst, würde ich dir empfehlen, dich auf jeden Fall damit zu beschäftigen.
Die Funktion bildet die Differenz der Werte der ersten Spalte (falls diese ungleich sind). Ist diese Differenz negativ, so ist b[0] größer. Ist die Differenz positiv, ist a[0] größer. Die Differenz wird an die rufende Funktion (hier: qsort()) zurückgegeben. Dort kann dann, wie ich oben, entschieden werden, welches Datum kleiner (größer) ist, und an welche Position diese Datum kommen soll. Wenn a[0] und b[0] gleich groß sind, wird genauso mit a[1] und b[1] verfahren.
Die Funktion comp_3() gibt somit nur an, welches von zwei Daten kleiner (größer) ist.
Gruss
Mizi
Ich verstehe nicht ganz wie comp3 funktioniert, weil ich die Sternchen noch nicht kenne
Mit den Sternchen wird ein Zeiger auf einen Adressbereich im Speicher dereferenziert. D. h. (im Prinzip) du übergibst deiner Funktion eine Adresse im Speicher. Mit den Sternchen kannst du dann auf den Inhalt der Adresse zurückgreifen. Da du Zeiger noch nicht kennst, würde ich dir empfehlen, dich auf jeden Fall damit zu beschäftigen.
Code:int comp_3(const void *v1, const void *v2) { int* a = (int*)v1; int* b = (int*)v2; if (a[0] != b[0]) return a[0] - b[0]; else return a[1] - b[1]; }
Was ich verstehe ist, dass er erst nach Spalte 0 und danach nach Spalte 1 sortiert, woher er weiß was a und b sind bekomm ich aber nicht raus. Und wie mittels "a[0] - b[0]" sortiert wird auch nicht. Der Debugger ist mir da leider auch keine große Hilfe. Was natürlich auch wieder an mir liegen kann...
Die Funktion bildet die Differenz der Werte der ersten Spalte (falls diese ungleich sind). Ist diese Differenz negativ, so ist b[0] größer. Ist die Differenz positiv, ist a[0] größer. Die Differenz wird an die rufende Funktion (hier: qsort()) zurückgegeben. Dort kann dann, wie ich oben, entschieden werden, welches Datum kleiner (größer) ist, und an welche Position diese Datum kommen soll. Wenn a[0] und b[0] gleich groß sind, wird genauso mit a[1] und b[1] verfahren.
Die Funktion comp_3() gibt somit nur an, welches von zwei Daten kleiner (größer) ist.
Gruss
Mizi