按值传递数组

时间:2013-03-12 11:18:35

标签: c++

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

如果是的话,我该怎么做?

4 个答案:

答案 0 :(得分:6)

如果 array 表示原始 数组,则答案为。你不能用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::vectorstd::array的形式提供。

答案 1 :(得分:4)

肯定:

void foo(std::array<int, 42> x);

答案 2 :(得分:0)

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

答案 3 :(得分:0)

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