parametrem funkcji jest inna funkcja (czysty C)

0

Witam,
Przed swietami na kolosku mialem zadanie, w ktorym byla wywolywana funkcja z dwoma parametrami i tym drugim parametrem byla inna funkcja ktora w ogole ja mialem stworzyc (ta funkcja o ile dobrze pamietam miala wypisywac rozne dane na ekranie). Czysty jezyk C.
Moje pytanie: W jaki sposob zabierac sie za takiego typu zadania?

2

Nie rozumiem pytania. W C możesz używać wskaźników do funkcji i taki wskaźnik może być parametrem innej funkcji.

1

Google -> Function pointers in c

3

http://ideone.com/gz0kOM

#include <stdio.h>

typedef void show_type(int y,int x); /* show_type - typ który opisuje funkcje o takim prototypie */

void showyx(int y,int x) { printf("(%d,%d)\n",y,x); } /* jedna funkcja o takim prototypie */
void showxy(int y,int x) { printf("(%d,%d)\n",x,y); } /* druga funkcja o takim prototypie */

void foo(show_type *fun /*, ... */ ) /* funkcja przyjmująca wskaźnik na taki prototyp */
  {
   /* ... */
   int x=2,y=3;
   fun(y,x);
   /* ... */
  }

int main()
  {
   foo(&showyx);
   foo(&showxy);
   return 0;
  }

Lub sensowny przykład: http://www.cplusplus.com/reference/cstdlib/qsort/

3

Albo

typedef void (*show_type)(int y,int x);
 
void foo(show_type fun /*, ... */ )
0

@Azarien, albo od razu:

void foo(void (*fun)(int y,int x) /*, ... */ ) /* funkcja przyjmująca wskaźnik na taki prototyp */

po kiego się przyjmować czytelnością ;P

Komentarz od @Azarien skojarzył mi się z pewnym kawałem:
Angielska rodzina: mister Sem, missis Sem oraz miss Sem starsza i miss Sem młodsza odpuścili przysługę na weekendy i usiedli napić się herbaty.
Po zakończeniu picia herbaty zaczęła się kłótnia - kto będzie sprzątać ze stołu.
Wtedy mister Sem powiedział: - Kto pierwszy przemówi chociażby słowo, ten będzie sprzątać ze stołu. Usiadł w krzesło zapalił fajkę i zagłębił się w czytanie gazety.
Po jakimś czasie wpadł narzeczony młodszej córki, grzecznie się przekwitał ale jemu nikt nie odpowiedział.
Wtedy on wziął miss Sem młodszą odniósł do sypialni i zrobił to co zamierzał zrobić dopiero po ślubie, po czym przyniósł i posadził ją na miejsce. Jemu nikt nic nie powiedział.
Wtedy on wziął miss Sem starszą odniósł do sypialni i zrobił to co zamierzał zrobić miesiąc po ślubie, po czym przyniósł i posadził ją na miejsce. Jemu nikt nic nie powiedział.
Wtedy on wziął missis Sem odniósł do sypialni i zrobił to o czym nawet nie marzył, po czym przyniósł i posadził ją na miejsce. Jemu nikt nic nie powiedział.
Nagle przypomniał sobie dlaczego wpadł, w jego samochodzie zaczęli strasznie skrzypieć lusterka, więc on zapytał: - mister Sem u was przypadkiem nie znajdzie się trochę wazeliny?
Nie! - twardo odparł mister Sem i poszedł sprzątać ze stołu.

1 użytkowników online, w tym zalogowanych: 0, gości: 1