In C, without using a typedef, you had to put 'struct name' instead of just 'name' when declaring an object.
In C++, this is no longer required, but you might still see C-style code that is compatible with C++ use it.
} variable; //this makes a variable of type foo. you can do it to classes as well. It is likely a global variable, due to where you typically create structs or classes, which is at the global scope. I really dislike this style (its left over from C) because of the accidental globals as wells as being hard to spot when trying to get a list of variables out of the code.