Functions allow code to be reused by defining blocks of code that perform tasks and can be called from different parts of a program. A function consists of a return type, name, list of arguments, and block of code, and is defined with a prototype and definition. Arguments are passed to functions through actual arguments during a function call, corresponding to the formal arguments specified in the function prototype and definition.