Merge pull request #102 from sergiokas/master

Adding small function pointers example in C
This commit is contained in:
Adam Bard 2013-07-04 09:41:45 -07:00
commit b59bbc949d

View File

@ -363,6 +363,36 @@ int area(rect r){
return r.width * r.height; return r.width * r.height;
} }
///////////////////////////////////////
// Function pointers
///////////////////////////////////////
/*
At runtime, functions are located at known memory addresses. Function pointers are
much likely any other pointer (they just store a memory address), but can be used
to invoke functions directly, and to pass handlers (or callback functions) around.
However, definition syntax may be initially confusing.
Example: use str_reverse from a pointer
*/
void str_reverse_through_pointer(char * str_in) {
// Define a function pointer variable, named f.
void (*f)(char *); // Signature should exactly match the target function.
f = &str_reverse; // Assign the address for the actual function (determined at runtime)
(*f)(str_in); // Just calling the function through the pointer
// f(str_in); // That's an alternative but equally valid syntax for calling it.
}
/*
As long as function signatures match, you can assign any function to the same pointer.
Function pointers are usually typedef'd for simplicity and readability, as follows:
*/
typedef void (*my_fnp_type)(char *);
// The used when declaring the actual pointer variable:
// ...
// my_fnp_type f;
``` ```
## Further Reading ## Further Reading