Est-il possible d’avoir des tableaux anonymes et ad-hoc en C?

Est-il possible de créer des tableaux anonymes et ad-hoc en C?

Par exemple, supposons que j’ai une fonction appelée processArray(int[] array) qui prend un tableau int en argument, puis-je lui passer un tableau anonyme de la manière suivante:

 int main(){ processArray( (int[]){0, 1, 2, 3} ); //can I create this type of array? return 0; } 

Ou dois-je déclarer le tableau précédemment (avec un pointeur), puis transmettre son pointeur à processArray ()? Par exemple:

 int main(){ int[] myArray = {0, 1, 2, 3}; processArray(myArray); return 0; } 

Avec C99 et C11, vous pouvez écrire ce que vous avez écrit, comme illustré par le code suivant. Ce sont des “littéraux composés”, décrits dans ISO / IEC 9899: 2011 § 6.5.2.5 Littéraux composés (et c’est la même section dans ISO / IEC 9899: 1999).

 #include  static void processArray(int n, int arr[]) { for (int i = 0; i < n; i++) printf(" %d", arr[i]); putchar('\n'); } int main(void) { processArray(4, (int[]){0, 1, 2, 3}); return 0; } 

Lorsqu'il est exécuté, il produit la réponse:

  0 1 2 3