Chicos a ver si alguno me puede resolver esta duda sobre C++

Cual es la diferencia entre:
reinterpret_cast <char> (&alumno) y (char*) &alumno

Y otra la diferencia entre:
struct a
{...
};


y

typedef struct
{...
}a;


Gracias chicos.