是否可以在C中使用匿名的ad-hoc数组?

是否可以在C中创建匿名的ad-hoc数组?

例如,假设我有一个名为processArray(int[] array)的函数,它以int数组作为参数,我可以通过以下方式将它传递给匿名数组:

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

或者我必须先声明数组(使用指针),然后将其指针传递给processArray()? 例如:

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

使用C99和C11,您可以编写您编写的内容,如以下代码所示。 这些是“复合文字”,在ISO / IEC 9899: 2011§6.5.2.5复合文字中描述 (它与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; } 

运行时,它会产生答案:

  0 1 2 3