So my question is multifaceted.
For the purpose of understanding C (not C++) I believe the following code:
struct Foo { int bar; };
creates a custom type that I can use, but so does this:
typedef Foo { int bar; };
The only difference I have seen is whether or not I have to use the "struct" keyword before the variable of the type Foo. What are the differences that cause this behavior?