I understand I can use pointers for functions.
Can someone explain why one would use them, and how? Short example code would be very helpful to me.
For code, check out qrdl's response to state machines tutorials.
I've used a variant of his method to implement a a menu for an LCD display I have on a board. Very very useful, makes the coding much cleaner and easier to read. Using function pointers makes expanding the number, names and ordering of menus very easy, and hides all those details from the higher level calling function that just sees 'hey, I write to the LCD here.'