L'affectation des structures est cool. Beaucoup de gens ne semblent pas se rendre compte que les structures sont aussi des valeurs et peuvent être attribuées, il n'est pas nécessaire d'utilisermemcpy()
, lorsqu'une simple affectation fait l'affaire.
Par exemple, considérons une bibliothèque de graphiques 2D imaginaires, elle pourrait définir un type pour représenter une coordonnée d'écran (entière):
typedef struct {
int x;
int y;
} Point;
Maintenant, vous faites des choses qui peuvent sembler "incorrectes", comme écrire une fonction qui crée un point initialisé à partir des arguments de fonction, et le renvoie, comme ceci:
Point point_new(int x, int y)
{
Point p;
p.x = x;
p.y = y;
return p;
}
C'est sûr, tant (bien sûr) que la valeur de retour est copiée par valeur à l'aide de l'affectation de structure:
Point origin;
origin = point_new(0, 0);
De cette façon, vous pouvez écrire du code assez propre et orienté objet, le tout en C.