Attribuer plusieurs valeurs à un tableau en C
Est-il un moyen de le faire dans une forme condensée?
GLfloat coordinates[8];
...
coordinates[0] = 1.0f;
coordinates[1] = 0.0f;
coordinates[2] = 1.0f;
coordinates[3] = 1.0f;
coordinates[4] = 0.0f;
coordinates[5] = 1.0f;
coordinates[6] = 0.0f;
coordinates[7] = 0.0f;
return coordinates;
Quelque chose comme coordinates = {1.0f, ...};
?
- Êtes-vous de retourner un pointeur sur une variable locale, là? Certaines des choses que les gens ont dit dans les réponses/commentaires ci-dessous supposent que les variables impliquées sont automatiques, ou qu'ils ne le sont pas. Pourrait aider si vous spécifiez.
- Une fois que la structure est initialisé, il n'y a pas un moyen facile de masse affecter des membres (autres que de faire une copie d'une autre structure avec
memcpy
). Je me retrouve souvent désireux j'ai eu cette fonction. - Je pense que votre réponse originale à cette question est le meilleur -- c'est de l'intuition, bien qu'un peu verbeux, mais ce n'est pas un sujet de préoccupation pour les compilateurs modernes.
Vous devez vous connecter pour publier un commentaire.
Si vous avez vraiment à attribuer valeurs (par opposition à initialiser), vous pouvez le faire comme ceci:
Old school:
Il y a un truc pour envelopper le tableau dans une structure (qui peut être initialisé après la déclaration).
ie.
Exactement, vous avez presque eu:
Vous pouvez utiliser:
mais c'est au moment de la compilation d'initialisation - vous ne pouvez pas utiliser cette méthode dans la norme actuelle pour ré-initialiser (bien que je pense qu'il y a des façons de le faire dans la norme à venir, qui ne peuvent pas immédiatement vous aider).
Les deux autres moyens qui viennent à l'esprit sont à blat le contenu, s'ils sont fixes:
ou de fournir une fonction qui ressemble à votre code d'initialisation de toute façon:
en gardant à l'esprit ces points de suspension (
...
) sont des espaces réservés, et non pas les choses à la lettre d'insérer dans le code.Si vous faites ces mêmes affectations beaucoup dans votre programme et que vous voulez un raccourci, la solution la plus simple pourrait être de simplement ajouter une fonction
et puis il suffit d'appeler