Functions allow code reuse by grouping a sequence of statements together under a name. Functions are declared with a return type and parameter list, and defined with a body of statements. Parameters pass data into a function, and can be passed by value or by reference. Default parameters provide default values if none are specified. Inline functions have their code inserted at the call site rather than jumping to a separate function definition.