是否可以在C中创建匿名的ad-hoc数组?
例如,假设我有一个调用的函数processArray(int[] array)
,它接受一个int数组作为参数,我可以通过以下方式传递一个匿名数组:
int main(){
processArray( (int[]){0, 1, 2, 3} ); //can I create this type of array?
return 0;
}
Run Code Online (Sandbox Code Playgroud)
或者我是否必须先声明数组(使用指针),然后将其指针传递给processArray()?例如:
int main(){
int[] myArray = {0, 1, 2, 3};
processArray(myArray);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
Jon*_*ler 24
使用C99和C11,您可以编写您编写的内容,如以下代码所示.这些是"复合文字",在ISO/IEC 9899:2011§6.5.2.5复合文字中描述(它与ISO/IEC 9899:1999中的相同部分).
#include <stdio.h>
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;
}
Run Code Online (Sandbox Code Playgroud)
运行时,它会产生答案:
0 1 2 3
Run Code Online (Sandbox Code Playgroud)