假设我有一个数组
int arr[] = {...};
arr = function(arr);
我的功能是
int& function(int arr[])
{
//rest of the code
return arr;
}
我在这里犯了什么错误?
int& function(int arr[])
在此函数中,arr 是一个指针,无法再次将其转回数组。它是一样的
int& function(int* arr)
int arr[] = {...};
arr = function(arr);
假设该函数设法返回对数组的引用,这仍然不起作用。您不能分配给数组。最好的情况是你可以将结果绑定到“X ints 数组的引用”(使用 typedef,否则语法会变得非常难看):
typedef int ten_ints[10];
ten_ints& foo(ten_ints& arr)
{
//..
return arr;
}
int main()
{
int arr[10];
ten_ints& arr_ref = foo(arr);
}
但是,完全不清楚您问题中的代码应该实现什么目的。您在函数中对数组所做的任何更改都将对调用者可见,因此没有理由尝试返回数组或将其分配回原始数组。
如果您想要一个可以分配并按值传递的固定大小的数组(复制内容),那么有std::tr1::array
(or boost::array
). std::vector
也是一个选项,但这是一个动态数组,因此不是完全等价的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)