Function Pointers
Function pointers are pointers that, instead of pointing to data, point
to executable code or to blocks of information needed to invoke
executable code. They are used to store and manage functions as if
they were pieces of data. Function pointers have a type that is
described in terms of a return value and parameters that the function
accepts. Declarations for function pointers look much like
declarations for functions, except that an asterisk ( * ) appears
before the function name, and the asterisk and name are surrounded by
parentheses for reasons of associativity. For example, in the
following code, match
is declared as a
pointer to a function that accepts two void pointers and returns an
integer:
int (*match)(void *key1, void *key2);
This declaration means that we can set
match
to point to any function that accepts
two void pointers and returns an integer. For example, suppose
match_int is a function that accepts two void
pointers to integers and returns 1 if the integers match, or
otherwise. Assuming the previous declaration, we could set
match
to point to this function by
executing the following statement:
match = match_int;
To execute a function referenced by a function pointer, we
simply use the function pointer wherever we would normally use the
function itself. For example, to invoke the function referenced by
match
earlier, we execute the following
statement, assuming x
,
y
, and retval
have been declared as integers:
retval = match(&x, &y);
One important use ...
Get Mastering Algorithms with C now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.