Stacks are a special type of data structure that follows the Last In First Out (LIFO) principle. Arguments are passed from right to left on a stack when calling functions in C, but the output of a printf statement printing those arguments from right to left will be in reverse order because arguments are evaluated left to right. Stacks have applications in argument passing in C code as demonstrated by the example code and output.