Functions in C can be divided into library functions and user-defined functions. Library functions are predefined in header files while user-defined functions are created by the programmer. There are three aspects of a function - declaration, definition, and call. The function declaration specifies the return type and parameters. The function definition contains the actual body of statements. The function call executes the function. Functions can be passed arguments and return values. Arguments can be passed by value or by reference, affecting whether changes inside the function affect the original variables.