将值直接作为数组传递给 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() 不一样,但我认为这只是您的代码段中的错字。