将静态数组传递给 C++ 中的函数

xor*_*ori 5 c++ visual-c++

使用定义的函数作为...

void func (int a [3]) { ... }
Run Code Online (Sandbox Code Playgroud)

我希望能够像这样传递动态静态数组

func (new int [3] {1,2,3});
Run Code Online (Sandbox Code Playgroud)

代替...

int temp [3] = {1,2,3};
func(temp);
Run Code Online (Sandbox Code Playgroud)

这可以用 C++ 实现吗?

Jes*_*ood 4

如果您有 C++11 编译器,func (new int [3] {1,2,3});则可以正常工作(但是,请记住您负责delete内存)。对于 gcc,只需传递-std=c++11标志即可。

但是,请查看一下,std::array这样您就不必使用new

例子

void func (std::array<int, 3> a)
{
}

int main()
{
    func({{1, 2, 3}});
}
Run Code Online (Sandbox Code Playgroud)