8

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

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

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

printArray( {3, 4, 5} );

如果我事先知道这些值而不必仅仅为了将它传递给函数而创建一个数组

4

1 回答 1

8

TL;DR这些函数需要一个(指向)数组作为输入参数,因此您必须传递一个。没有数组就无法调用它。

也就是说,如果您要问“不创建额外的数组变量”,那当然是可能的。您可以使用称为复合文字的东西来实现这一点。就像是:

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

应该可以正常工作。

引用C11,第 6.5.2.5 章

[ C99第 §6.5.2.5/p4 章]

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

也就是说,printArr()并不printArray()相同,但我相信这只是你的代码段中的一个错字。

于 2016-09-19T10:00:29.980 回答