Affectation de tableaux C / C ++

Exemple de code:

int ar[3]; ............ ar[0] = 123; ar[1] = 456; ar[2] = 789; 

Y a-t-il un moyen de l’initier plus court? Quelque chose comme:

 int ar[3]; ............ ar[] = { 123, 456, 789 }; 

Je n’ai pas besoin de solution comme:

 int ar[] = { 123, 456, 789 }; 

La définition et l’initialisation doivent être séparées.

Ce que vous demandez ne peut pas être fait directement. Cependant, vous pouvez faire différentes choses, à commencer par la création d’un tableau local initialisé avec l’initialisation de l’agrégat, puis memcpy sur votre tableau (valide uniquement pour les types POD), ou l’utilisation de bibliothèques de niveau supérieur comme boost::assign .

 // option1 int array[10]; //... code { int tmp[10] = { 1, 2, 3, 4, 5 } memcpy( array, tmp, sizeof array ); // ! beware of both array sizes here!! } // end of local scope, tmp should go away and comstackr can reclaim stack space 

Je n’ai pas le temps de vérifier comment faire cela avec boost::assign , car je ne travaille quasiment jamais avec des tableaux bruts.

Les tableaux peuvent être assignés directement:

 int a[3] = {1, 2, 3}; 

Consultez également le didacticiel sur les tableaux C ++ .

int a [] = {1,2,3};

ça ne marche pas pour toi?

 main() { int a[] = {1,3,2}; printf("%d %d %d\n", a[0], a[1], a[2]); printf("Size: %d\n", (sizeof(a) / sizeof(int))); } 

impressions:

 1 3 2 Size: 3 

Qu’en est-il de l’initialisation du tableau C99?

 int array[] = { [0] = 5, // array[0] = 5 [3] = 8, // array[3] = 8 [255] = 9, // array[255] = 9 }; 
 #include  using namespace std; int main() { int arr[3]; arr[0] = 123, arr[1] = 345, arr[2] = 567; printf("%d,%d,%d", arr[0], arr[1], arr[2]); return 0; }