Variadic functions allow a function to take a variable number of arguments. They are declared with an ellipsis after the last named parameter. The stdarg.h header provides macros for accessing the variable arguments: va_start initializes argument parsing, va_arg returns the next argument of a given type, and va_end cleans up. An example sums all integer arguments by iterating with va_arg, illustrating how variadic functions work.