Question: What’s the difference between these two declarations?
struct str1 { … } ;
typedef struct { … } str2 ;

Solution: The first form declares a structure tag whereas the second declares a typedef. The main difference is that the second declaration is of a slightly more abstract type — its users don’t necessarily know that it is a structure, and the keyword struct is not used when declaring instances of it.