是否可以按值将数组传递给C ++函数?
如果是的话,我该怎么做?
答案 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::vector
和std::array
的形式提供。
答案 1 :(得分:4)
肯定:
void foo(std::array<int, 42> x);
答案 2 :(得分:0)
通常将数组传递给函数会使其衰减为pointer
。您隐式将数组的(start-)地址传递给函数。所以你实际上不能按值传递数组。如果要按值传递内容,为什么不使用va_args
?
答案 3 :(得分:0)
是的,你可以。您可以使用指针作为参数来实现它,但在函数体中,您可以使用copy mothord(我记不起的确切名称)来复制它。