2

是否可以按值将数组传递给 C++ 函数?

如果是,我会怎么做?

4

4 回答 4

6

如果数组是指原始 数组,那么答案是否定的。您不能在 C 或 C++ 中按值传递它们。

这两种语言都提供了一种解决方法,您可以在其中包装struct该数组并传递其对象。例子:

struct MyArray { int a[100]; };
...
struct MyArray obj; // `obj.a[]` is the array of your interest
foo(obj);  // you have passed the `a[]` by value

在 C++ 中,此类结构很容易以std::vector和的形式获得std::array

于 2013-03-12T11:27:54.517 回答
4

确实:

void foo(std::array<int, 42> x);
于 2013-03-12T11:20:18.040 回答
0

通常将数组传递给函数会使其衰减为pointer. 您将数组的(开始)地址隐式传递给函数。所以你实际上不能按值传递数组。va_args如果要按值传递内容,为什么不使用?

于 2013-03-12T11:21:09.280 回答
0

是的你可以。你可以通过使用指针作为参数来实现它,但是在函数体中,你可以使用copy mothord(确切的名字我不记得了)来复制它。

于 2013-03-12T11:24:20.630 回答