我在为学校科学博览会撰写的程序中有一个函数,它需要做的是将数组作为参数,加密数组的值,并将加密值存储在字符串中。我怎么能这样做?
答案 0 :(得分:5)
有几种方法可以做到这一点。以下是一些例子:
C风格
void f(T *array, size_t size);
在这种风格中,数组衰减到指向第一个参数的指针,该参数作为第一个参数传递给函数。由于这种转换失去了数组的大小,你也要传递大小,我作为函数的第二个参数。用它作为:
T array[N]; //N is some compile-time constant.
f(array, N);
C ++ - 风格
template<typename T, size_t size>
void f(T (&array)[size]);
void f(std::vector<T> & array);
在此样式中,您可以通过引用传递数组,该数组保留数组的大小,或者您可以使用std::vector<T>
代替。用它作为:
T array[N];
f(array); //calls the first version (the template version)
std::vector<T> v;
//fill v
f(v); //calls the vector version
由@Mike添加:或者你可以使用它,这甚至更好:
template<typename FwdIterator>
void f(FwdIterator begin, FwdIterator end)
{
for( ; begin != end ; ++begin)
{
//your code
}
}
这更好,更通用,因为有了它,您可以使用标准容器(例如std::vector
,std::list
等)以及普通数组。例如,
T array[N];
std::vector<T> v;
//fill v
f(array, array+N); //okay
f(v.begin(), v.end()); //also okay.
很酷,不是吗?
答案 1 :(得分:1)
void YourFunction(const int myarray[]);
否则,如果您想接受任何类型
void YourFunction(const void* myGenericArray);
希望这有帮助
答案 2 :(得分:0)
void encrypt(Array& array, /*other parameters*/)
无论您使用何种阵列类型,都可以。
如果你的数组是C风格的指针,你也可以传递它:
void encrypt(int* array, /*other parameters*/)