将数组传递给函数,而不事先明确声明数组

时间:2016-03-20 11:43:55

标签: c arrays

我有这个功能,我多次打电话:

void shifter(int [])
{
//...
}

我想用一个我即时分配的数组来调用它,例如:

shifter({1,2,3,0});

我知道上面的例子不起作用。是否有一种语法可以正常工作,所以每次调用函数时都不必显式声明数组?

这是C,而不是C ++。

3 个答案:

答案 0 :(得分:3)

使用Compound Literals(可在C99 +中使用):

shifter( (int []){1,2,3,0} );

注意:GCC和clang都支持它作为C90模式的扩展。

答案 1 :(得分:0)

当您将数组传递给C中的函数时,您传递的是第一个元素的地址,而不是数组本身的内容。所以我认为没有办法做到这一点。

如果真的只有4个参数,你可以使用4 int,这样做不会太长。如果不止于此,为什么不使用aray?

答案 2 :(得分:0)

如果您可以考虑使用C ++,请使用以下命令:

shifter(new int[](1,2,3,0));