Your code is quite weird, first, you forgot the ';' at the end of the struct block in both examples, besides, the second one isn't complete, it should be:
Code:
typedef struct info {
int x;
char name[10];
} info;
info mike;
About the way the compiler does, it is a little more complex, a typedef defines an equivalent in all points to a given type, not just a replacement.
example:
Code:
typedef int *intp;
intp p1, p2; /* Here, both lpv and pv are int * */
int *pn, n; /* Only pn is a int *, n is a simple int */