Non, vous ne pouvez pas les mettre à des valeurs arbitraires dans un énoncé (à moins de faire partie de la déclaration).
Vous pouvez soit le faire avec du code, quelque chose comme:
myArray[0] = 1;
myArray[1] = 2;
myArray[2] = 27;
:
myArray[99] = -7;
ou (si il y a une formule):
for (int i = 0; i < 100; i++) myArray[i] = i + 1;
L'autre possibilité est de garder autour de quelques modèles qui sont fixés au moment de la déclaration et de les utiliser pour initialiser ton tableau, quelque chose comme:
static const int onceArr[] = { 0, 1, 2, 3, 4,..., 99};
static const int twiceArr[] = { 0, 2, 4, 6, 8,...,198};
:
int myArray[7];
:
memcpy (myArray, twiceArr, sizeof (myArray));
Cela a l'avantage d' (le plus probable) en étant plus rapide et permet de créer des petits tableaux que les modèles. J'ai utilisé cette méthode dans des situations où je dois ré-initialiser un tableau rapide, mais à un état spécifique (si l'état étaient tous les zéros, je voudrais juste utiliser memset
).
Vous pouvez même localiser l'endroit d'une phase d'initialisation de la fonction:
void initMyArray (int *arr, size_t sz) {
static const int template[] = {2, 3, 5, 7, 11, 13, 17, 19, 21, ..., 9973};
memcpy (arr, template, sz);
}
:
int myArray[100];
initMyArray (myArray, sizeof(myArray));
Le tableau statique sera (presque certainement) être créé au moment de la compilation, donc il n'y aura pas de course coût pour, et l' memcpy
doit être absolument rapidement, bien plus vite que 1,229 les instructions d'affectation :-).