47 votes

Attribuer plusieurs valeurs au tableau en C

Existe-t-il un moyen de le faire sous 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, ...}; ?

37voto

James Curran Points 55356

Si vous devez vraiment attribuer des valeurs (par opposition à initialize ), vous pouvez le faire comme ceci :

  GLfloat coordinates[8]; 
 static const GLfloat coordinates_defaults[8] = {1.0f, 0.0f, 1.0f ....};
 ... 
 memcpy(coordinates, coordinates_defaults, sizeof(coordinates_defaults));

 return coordinates; 

22voto

domen Points 487

Bien que dans votre cas, une simple initialisation suffira, il existe une astuce pour envelopper le tableau dans une structure (qui peut être initialisée après la déclaration).

Par exemple:

 struct foo {
  GLfloat arr[10];
};
...
struct foo foo;
foo = (struct foo) { .arr = {1.0, ... } };

12voto

Pavel Minaev Points 60647

La méthode à l'ancienne :

 GLfloat coordinates[8];
...

GLfloat *p = coordinates;
*p++ = 1.0f; *p++ = 0.0f; *p++ = 1.0f; *p++ = 1.0f;
*p++ = 0.0f; *p++ = 1.0f; *p++ = 0.0f; *p++ = 0.0f;

return coordinates;

4voto

Felix Kling Points 247451

Exactement, vous avez presque compris:

 GLfloat coordinates[8] = {1.0f, ..., 0.0f};

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X