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.