我有一个接受整数数组作为参数的函数并打印它。
void printArray(int arr[3])
{
int i;
for(i=0; i<3; ++i)
{
printf("\n%d", arr[i]);
}
}
有没有办法像这样传递数组的值
printArray( {3, 4, 5} );
如果我知道前面的值而不必为了将它传递给函数而创建数组?
答案 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()
并不相同,但我相信这只是你片段中的一个错字。