有没有办法在 C 中将匿名数组作为参数传递?

新手上路,请多包涵

我希望能够在 C++ 中将数组声明为函数参数,如下面的示例代码所示(无法编译)。有没有办法做到这一点(除了事先单独声明数组)?

 #include <stdio.h>

static void PrintArray(int arrayLen, const int * array)
{
   for (int i=0; i<arrayLen; i++) printf("%i -> %i\n", i, array[i]);
}

int main(int, char **)
{
   PrintArray(5, {5,6,7,8,9} );  // doesn't compile
   return 0;
}

原文由 Jeremy Friesner 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 893
1 个回答

如果您使用的是较旧的 C++ 变体(C++0x 之前的版本),则不允许这样做。您所指的“匿名数组”实际上是一个 _初始化列表_。现在 C++11 已经出来了,这可以通过内置的 initializer_list 类型来完成。 _如果您的编译器将它们解析为 C99 或更高版本_,理论上您也可以使用 extern C 将其用作 C 样式的初始化列表。

例如:

 int main()
{
    const int* p;
    p = (const int[]){1, 2, 3};
}

原文由 rlbond 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题