Functions allow code to be reused by defining formulas that can be called from different parts of a program. Functions take in inputs, perform operations, and return outputs. They are defined outside of the main body with a function prototype, and can be called multiple times from within main or other functions. This document demonstrates how to define a FindMax function that takes in two numbers, compares them, and returns the maximum number. It shows function prototypes, defining the function outside of main, and calling the function from within main to find the maximum of two user-input numbers.