What does the -c flag do in gcc?

For example, what's the difference between

gcc -c output0.c

and

gcc output0.c

?

I know the second one makes a .a file, but I don't know what a .a file is.

Also, what does -o do in

gcc output0.o -o output0

Is it just to name the output file right?

Edit
Report