||

Programowanie w C – Przekazywanie funkcji jako argument funkcji

Wprowadzenie.

We wpisie przedstawiłem, w jaki sposób przekazać funkcję jako argument innej funkcji. Taka funkcjonalność może przydać nam się, gdy na przykład chcemy przeprowadzić testy naszej funkcji lub chcemy „obudować” funkcję dodatkową funkcjonalnością.

Zakres artykułu.

  • Przekazywanie funkcji jako argument funkcji
  • Przekazanie funkcji z parametrami jako argument funkcji

Przekazywanie funkcji jako argument funkcji

W pierwszym kroku napiszmy prostą funkcję, która wypisze nam wyraz „Hello”. 

Następnie należy stworzyć funkcję, która będzie posiadała parametr, do którego będziemy mogli przypisać jakąś funkcję.

Deklaracja takiej funkcji wygląda następująco.

W tym miejscu warto zwrócić uwagę, na to, że funkcje przekazuje się poprzez wskaźnik do funkcji. W naszym przypadku nasza funkcja jest typu void

Aby nie komplikować tego przypadku w definicji funkcji „fun2” napiszmy jedynie wywołanie przekazanej funkcji.

Definicja funkcji będzie wyglądała następująco.

Jak możemy zauważyć, wywołanie przekazanej funkcji nie różni się od wywołania standardowej funkcji.

Stwórzmy teraz funkcję main(), w której wywołamy funkcję fun2() oraz przekażemy do niej jako argument funkcję fun1().

Cały kod programu wygląda następująco.

natomiast wynik, jaki otrzymamy w konsoli, będzie następujący.

Hello

Przekazanie funkcji z parametrami jako argument funkcji

Teraz przedstawię, w jaki sposób przekazać funkcję z parametrami jako argument funkcji.

Podobnie jak wcześniej stwórzmy funkcję, która będzie dodawała dwie liczny typu int.

Następnie stwórzmy funkcję, która będzie przyjmowała funkcję jako argument. Funkcja ta ma mieć za zadanie przetestowanie funkcji dodawanie. Dodatkowo nasza funkcja testująca niech informuje nas, czy test przeszedł, czy jest nie. 

Funkcja taka będzie wyglądała następująco. 

Cały kod programu wygląda następująco.

natomiast wynik, jaki otrzymamy w konsoli, będzie następujący.

wynik dodawania to: 7
PASS
FAIL
PASS
FAIL

Dzięki zastosowaniu wyżej przedstawionej konstrukcji możemy w szybki sposób, przetestować jakąś funkcję z wieloma parametrami wejściowymi.

Autor artykułu
Dominik Bednarski

Podobne wpisy

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *