将值直接作为数组传递给C中的函数

时间:2016-09-19 09:58:51

标签: c arrays parameter-passing function-calls compound-literals

我有一个接受整数数组作为参数的函数并打印它。

void printArray(int arr[3])
{
   int i;
   for(i=0; i<3; ++i)
   {
      printf("\n%d", arr[i]);
   }
}

有没有办法像这样传递数组的值

printArray( {3, 4, 5} );

如果我知道前面的值而不必为了将它传递给函数而创建数组

1 个答案:

答案 0 :(得分:8)

TL; DR 函数需要一个(指向)数组作为输入参数,所以你必须传递一个。如果没有数组,你就无法调用

也就是说,如果您打算在不创建额外数组变量的情况下询问 ,那肯定是可能的。您可以使用名为 compound literal 的内容来实现这一目标。类似的东西:

 printArr( (int []){3, 4, 5} );

应该可以正常工作。

引用C11,章节§6.5.2.5

[ In C99章节§6.5.2.5/ p4 ]

  

后缀表达式,由带括号的类型名称后跟括号括起来组成   初始化列表是复合文字。它提供了一个未命名的对象,其值由初始化列表给出。

尽管如此,printArr()printArray()并不相同,但我相信这只是你片段中的一个错字。