La asignación de estructura es genial. Muchas personas no parecen darse cuenta de que las estructuras también son valores, y pueden asignarse alrededor, no hay necesidad de usarlas memcpy(), cuando una tarea simple hace el truco.
Por ejemplo, considere una biblioteca imaginaria de gráficos 2D, podría definir un tipo para representar una coordenada de pantalla (entera):
typedef struct {
int x;
int y;
} Point;
Ahora, hace cosas que pueden parecer "incorrectas", como escribir una función que crea un punto inicializado a partir de argumentos de función, y lo devuelve, así:
Point point_new(int x, int y)
{
Point p;
p.x = x;
p.y = y;
return p;
}
Esto es seguro, siempre y cuando (por supuesto) el valor de retorno se copie por valor utilizando la asignación de estructura:
Point origin;
origin = point_new(0, 0);
De esta manera, puede escribir código bastante limpio y orientado a objetos, todo en un estándar simple C.