在C中的函数参数中创建数组

Create array in a function parameter in C

本文关键字:创建 数组 参数 函数      更新时间:2023-10-16

这在C或C++中可能吗?我有一个函数,声明如下:

int foo(double*)

我正试图做这样的事情:

foo([] = {1.0, 2.0, 3.0, 4.0});

我知道我可以单独创建一个数组,但我很好奇我是否可以这样做。

谢谢。

在C中:使用C99复合文字:

foo((double[]){ 1.0, 2.0, 3.0, 4.0 });

在C++中:(我讨厌"C/C++"问题!)-我尝试过这个方法,并以类似的方式使用C++11初始值设定项列表。然而,我不完全相信这是合法的还是会导致未定义的行为:

foo(&(std::vector<double> { 1, 2, 3, 4 })[0])

有人能证实这一点吗?(编译时没有警告,运行……但这并不意味着任何东西,。)

是的,您可以通过复合文字来实现这一点。C99允许此功能。

  foo((double[]){1.0, 2.0, 3.0, 4.0});   

在本例中,复合文字创建了一个包含四个float s的数组(动态)。
你也可以写这个

  foo((double[4]){1.0, 2.0, 3.0, 4.0});