1. Functions allow programmers to break complex problems into smaller, discrete tasks, making code more modular and reusable. Functions perform specific tasks and can optionally return values or receive parameters.
2. There are two types of functions - predefined functions from standard libraries like stdio.h and math.h, and user-defined functions created for specialized tasks. Functions have a name, parameters, return type, and body.
3. Functions improve code organization and readability. They separate implementation from interface and allow code reuse. Parameters can be passed by value, where copies are used, or by reference, where the function can modify the original arguments.