我希望能够将C中的可变数量的对象传递给函数,方法是将其包装在数组中。举个例子:
void test(int arr[]) {}
int main (int argc, char** argv) {
test({1, 2});
}
但我不确定如何创建一个在线数组,并且在Google上搜索问题会导致很多不相关的结果。
我也试过这些变化:
test(int[]{1, 2});
test(int[2]{1, 2});
但是没有找到任何合理的方法来创建它。这怎么可能在C?
作为备注,我无法使用varargs
。
修改
使用的代码和编译器错误:
void test(int ex[]) {}
int main() {
test(int[]{1, 2});
}
test.c:4:10:错误:在' int'
之前的预期表达式
答案 0 :(得分:3)
你的第一次尝试非常接近 - 你只需要添加括号:
test((int[]){1, 2});
// ^ ^
// Here |
// and here
这是数组的复合文字语法,在C99中添加。类似的语法可用于struct
,并且还需要围绕类型名称的括号。
答案 1 :(得分:0)
void test(int arr[])
{
/* some body */
}
int main(void)
{
int array[] = {1, 2};
test(array);
return 0;
}