Function prototypes must be declared before the corresponding functions can be used in the code. This allows the compiler to perform type checking on function calls. A prototype does resemble the function header (option A is partially correct but not complete), and it does tell the compiler parameter types but typically not names (option B is incorrect). Option C correctly states the essential purpose - declaration before usage.