是否可以按值将数组传递给 C++ 函数?
如果是,我会怎么做?
如果数组是指原始 数组,那么答案是否定的。您不能在 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
。
确实:
void foo(std::array<int, 42> x);
通常将数组传递给函数会使其衰减为pointer
. 您将数组的(开始)地址隐式传递给函数。所以你实际上不能按值传递数组。va_args
如果要按值传递内容,为什么不使用?
是的你可以。你可以通过使用指针作为参数来实现它,但是在函数体中,你可以使用copy mothord(确切的名字我不记得了)来复制它。