按值传递数组
Passing array by value
是否可以将数组按值传递给c++函数?
如果是,我该怎么做呢?
如果数组是指raw数组,那么答案是No。在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
呢?
可以。您可以通过使用指针作为参数来实现它,但是在函数体中,您可以使用复制方法(确切的名称我记不清了)来复制它。
相关文章:
- 将数组作为参数传递给函数安全吗?作为第三方职能部门,可以探索他们想要的之外的其他元素
- 如何将数组传递给函数,以便在更改该函数中的数组值时原始数组的值不会更改?
- 将指向 1D Fortran 数组的指针传递给使用 C_LOC() 进行C++会导致垃圾值
- 如何在c++中按值传递数组
- 将字符串数组从fortran传递到C/C DLL,并获取具有更改值的数组
- 数组是通过引用传递的,但是如果我只传递未存储在内存中的数组的值,会发生什么
- 数组在函数中作为参数传递并被访问,那么为什么从函数返回后数组的值会被修改呢?
- 如何将整个 char 数组及其值传递给另一个函数
- 如何将数组的值传递到类Qt 5.0 C++中
- C++如何将数组传递给函数,然后调用它来显示数组的值
- 向函数传递特定的数组索引值
- 在C++中,按值传递数组和引用传递数组之间的差异
- 按值传递时改变整型数组的大小
- 按值传递字符数组,并从函数返回一个新的字符数组
- 将数组的值传递给修改值的函数,然后将其返回到新数组中
- c++按值传递结构数组
- 为什么我们不能传递数组按值运行?
- 在传递数组作为值的函数中基于范围的for循环
- 按值传递数组
- 按值传递 typedef(固定大小)数组