C functions can be defined separately from objects, require function prototypes, and always pass parameters by copy rather than by reference. Function definitions specify the return type, name, and parameter list. Parameters are local variables within the function. Global variables can be accessed across files using extern declarations. Variables have block-level scope defined by curly braces. Header files contain common function prototypes and declarations to share across files.