¿Cómo asignar múltiples valores en una estructura a la vez?

Puedo hacer esto en la inicialización de una estructura Foo:

Foo foo =  {bunch, of, things, initialized};

pero no puedo hacer esto:

Foo foo;
foo = {bunch, of, things, initialized};

Entonces, dos preguntas:

¿Por qué no puedo hacer lo último? ¿Es el primero un constructor especial solo para inicialización?

¿Cómo puedo hacer algo similar al segundo ejemplo, es decir, declarar un montón de variables para una estructura en una sola línea de código después de que ya se haya inicializado? Estoy tratando de evitar tener que hacer esto para estructuras grandes con muchas variables:

Foo foo;

foo.a = 1;
foo.b = 2;
foo.c = 3;
//... ad infinitum