Zeiger auf Funktion übergeben, aber wie?

#730006
Lesenswert?

Hallo,
ich habe eine Funktion
1
int ui8_vergleich(unsigned char a, unsigned char b)

, deren Zeiger ich gerne an eine weitere Funktion:
1
bubblesort(...)

übergeben möchte. Allerding krieg ich's nicht hin.

Meine Fragen:
Wie muß ich bubblesort(...) definieren, um den Zeiger auf eine Funktion 
wie int ui8_vergleich(...) zu übergeben?
Wie rufe ich die übergebene Funktion in bubblesort() auf?
Wie muß ich bubblesort() dann aufrufen?

Vielen Dank für eure Hilfe
Gruß
Boxi
#730068
Lesenswert?

hm, stimmt, läuft. danke!

allerdings:
sinn der sache ist ja, dass ich auch mal funktionen mit anderen 
parametern an bubblesort übergeben möchte.

z.B. ui32_vergleich(unsigend long a, unsigned long b)

dann sind sicher einige harte casts anzuwenden.
weiß jemand, wie das geht?
#730072
Lesenswert?

Boxi Boxitec wrote:
> hm, stimmt, läuft. danke!
>
> allerdings:
> sinn der sache ist ja, dass ich auch mal funktionen mit anderen
> parametern an bubblesort übergeben möchte.

Schau dir an, wie qsort aus der Standardlibrary an das Problem
herangeht.
Das Stichwort lautet: void Zeiger.

Und ja: Du musst casten.
#730080
Lesenswert?

ok, habe jetzt ein
1
bubblesort(int (*comp)(void *, void *))
2
{
3
  ...
4
}

und ein
1
int ui8_vergleich(void *a, void *b)

damit könnte ich auch ein
1
int ui32_vergleich(void *a, void *b)

die ich so
1
bubblesort(ui32_vergleich);
2
bubblesort(ui8_vergleich);

aufrufe, je nachdem welche datentypen ich verwende.
Danke an euch nochmal

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren