Zeiger auf Funktion in C
Von: , Frage gestellt am Di, 10. Nov 2009
Hallo zusammen.
Im folgenden C-Programm verstehe ich einige Sachen nicht. Kann mir das jemand verdeutlichen?
#include "stdio.h"
#include "conio.h"
main()
{
int iarr[10]={2,3,8,1,43,13,22,32,11,7};
float farr[10]={...};
char sarr[10][20]={"Zeus\0","Hera\0","Athena\0","Artemis\0"....};
int i;
int iswap(),fswap(),sswap();
clrscr();
for(i=0;i<10;i++) printf("%3d %8.2f %s\n",iarr[i],farr[i],sarr[i];
printf("\n");
sort(iarr,iswap);
sort(farr, fswap);
sort(sarr,sswap);
....
getch();
}
1) Die Zeile int iswap(),fswap(),sswap() war mit "Declaration der Funktionspointer" kommentiert. Diese müssen aber doch nach dem Schema *iswap()... deklariert werden. Oder?
2) Der Aufruf sort(iarr,iswap) . Das ist eine Funktion oder Unterprogramm. Und dieser muss vorher bekannt gegeben worden sein. Ist er aber nicht. Kann das so funktionieren?
3) Generelle Frage. In der Zeile char sarr[10][20]={"Zeus\0".. wird ein mehrdimens. Array beschrieben. Wie werden Elemente beim schreiben in ein solches Adressiert? Passiert das hier überhaupt?
Nach dem Hauptprogramm kommt die sort Routine.
sort(void *v, int (*swp)())
{
int i,m;
...}
4) Es werden hier 2 Zeiger *v und *swp verwendet die aber vorher nirgendwo deklariert sind. Und mir ist nicht klar wohin die zeigen.
Danke an alle
