我需要将一个数组读入我的函数,提取数据,然后从函数返回一个数组。
数组只会保存 2 个值。
这就是我想在概念上做的事情:
int myfunction(int my_array[1])
{
int f_array[1];
f_array[0] = my_array[0];
f_array[1] = my_array[1];
// modify f_array some more
return f_array;
}
我已经阅读了有关指针等的内容,但感到非常困惑,希望能有一个真正基本的例子来说明如何最好地解决这个问题!
谢谢!
你不能在 C++ 中返回 n 内置数组。
如果您是 c++ 的新手并且对指针感到困惑,那么您真的不想使用数组(至少不想使用内置数组)。使用 std::vector<int>
相反,或者如果你只有一定数量的元素并且想要表达它(并且确实需要更好的性能)使用 boost::array<int, N>
.(甚至 std::array<int, N>
,如果你在 C++11
中编程(如果你不知道你是否在 C++11
中编程,很可能你不知道)。
例如:
std::vector<int> myfunction(const std::vector<int>& my_array) {
std::vector<int> f_array;
for(int i = 0; i < my_array.size(); ++i)
f_array.push_back(my_array[i]);
return f_array;
}
boost::array<int, 2> myfunction(const boost::array<int, 2>& my_array) {
boost::array<int, 2> f_array;
f_array[0] = my_array[0];
f_array[1] = my_array[1];
return f_array;
}
然后您可以简化复制代码(查找您决定使用的任何类的构造函数和成员函数,以及 STL 算法)。示例:
std::vector<int> myfunction(const std::vector<int>& my_array) {
std::vector<int> f_array(m_array);
...
return f_array;
}
另外一点,您的代码中有一个错误:您定义了 my_array
作为int my_array[1]
,这意味着它是一个只有一个元素的数组,但是您访问两个元素( my_array[0]
和 my_array[1]
),访问 my_array[1]
超出范围( int foo[N]
有 N
项的位置,从索引 0
开始到索引 N-1
)。我假设你的意思是 int my_array[2]
.