player* new_player(int id)
{
player* p = malloc(sizeof(player));
*p = (player) {.id = id };
return p;
}
(designated initializers, - les champs non mentionnés sont initialisés à 0 pour les entiers, NULL pour les pointeurs etc. C11 6.7.9/10)
Le compilateur, qui n'est pas la moitié d'un idiot pour peu qu'on lui demande gentiment d'optimiser, ne fabrique évidemment pas un "player" intermédiaire pour le copier ensuite.
- Edité par michelbillaud 22 octobre 2019 à 14:48:30
player new_player(int id)
{
return (player){id, 0, 0};
}
int main(void)
{
player Alice = new_player(45);
//...
return 0;
}
Comment utiliser un struct ?
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
git is great because Linus did it, mercurial is better because he didn't.