I often see C++ code like this:
void foo()
{
  struct sockaddr* from;
  // ...
}
Why is the struct specifier needed? Does it actually do anything? The compiler can already know that sockaddr is declared as a struct, so I wonder why this is useful or necessary. 
I've tried removing it in the past and haven't noticed a difference in behaviour, but I'm not confident it's safe to remove.
Similarly, what's the difference between these two?
sizeof(struct sockaddr)
sizeof(sockaddr)
 
     
     
     
     
     
    