将值直接作为数组传递给 C 中的函数
Passing values directly as array to function in C
我有一个接受整数数组作为参数并打印它的函数。
void printArray(int arr[3])
{
int i;
for(i=0; i<3; ++i)
{
printf("\n%d", arr[i]);
}
}
有没有办法像这样传递数组的值
printArray( {3, 4, 5} );
如果我事先知道值 而不必为了将其传递给函数而创建数组?
TL;DR 这些函数需要一个(指向)数组作为输入参数,所以你必须传递一个。如果没有 数组,你无法调用此 。
也就是说,如果你想问"without creating an additional array variable",那当然是可以的。您可以使用称为 compound literal 的东西来实现。类似于:
printArr( (int []){3, 4, 5} );
应该没问题。
引用 C11
,章节 §6.5.2.5
[在 C99
, 章节§6.5.2.5/p4]
A postfix expression that consists of a parenthesized type name followed by a brace-enclosed
list of initializers is a compound literal. It provides an unnamed object whose value is given by the initializer list.
也就是说,printArr()
和 printArray()
不一样,但我认为这只是您的代码段中的错字。
我有一个接受整数数组作为参数并打印它的函数。
void printArray(int arr[3])
{
int i;
for(i=0; i<3; ++i)
{
printf("\n%d", arr[i]);
}
}
有没有办法像这样传递数组的值
printArray( {3, 4, 5} );
如果我事先知道值 而不必为了将其传递给函数而创建数组?
TL;DR 这些函数需要一个(指向)数组作为输入参数,所以你必须传递一个。如果没有 数组,你无法调用此 。
也就是说,如果你想问"without creating an additional array variable",那当然是可以的。您可以使用称为 compound literal 的东西来实现。类似于:
printArr( (int []){3, 4, 5} );
应该没问题。
引用 C11
,章节 §6.5.2.5
[在 C99
, 章节§6.5.2.5/p4]
A postfix expression that consists of a parenthesized type name followed by a brace-enclosed list of initializers is a compound literal. It provides an unnamed object whose value is given by the initializer list.
也就是说,printArr()
和 printArray()
不一样,但我认为这只是您的代码段中的错字。