内联数组的C参数

时间:2014-05-09 15:15:55

标签: c arrays

我希望能够将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'

之前的预期表达式

2 个答案:

答案 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;
}