1) Functions allow programmers to organize code into reusable blocks and reduce redundant code. There are two types of functions: pre-defined/library functions and user-defined functions.
2) Functions are made up of a declaration, definition, parameters, and a return statement. When a function is called, the calling code is paused and control passes to the function.
3) Parameters allow passing of data into functions, while return values allow functions to return data. Functions can be called by value or by reference depending on whether the parameter address or value is passed.