Asignar una estructura a otra en C

¿Se puede asignar una instancia de una estructura a otra, así:

struct Test t1;
struct Test t2;
t2 = t1;

Lo he visto funcionar para estructuras simples, pero ¿funciona para estructuras complejas?
¿Cómo sabe el compilador cómo copiar elementos de datos según su tipo, es decir, diferenciar entre unint y cuerda?

Respuestas a la pregunta(5)

Su respuesta a la pregunta