我正在寻找如何将一个字符串/数组传递给一个函数,我试图通过值传递,但它似乎不起作用,我已经在线查看并通过引用看到但似乎没有正在工作。
有人可以帮忙吗?
答案 0 :(得分:3)
你声明一个函数,它通过引用获取10个int的数组,如下所示:
void f(int (&arr)[10]);
你这样称呼它
int arr[10];
f(arr);
你可以模板化你的功能
template<class T, int N>
void f(T (&arr)[N]);
答案 1 :(得分:0)
如果您使用的是可变大小的数组,则应使用以下内容:
void someFunc(char* szString, int cbChars)
{
for (int nChar == 0; nChar < cbChars; nChar++)
{ // Do something with the char array
szString[nChar] = 'A'; // Convert string to "AAAAAA..."
{
}
void callerFunc()
{
char szString[255];
// read file...
// put file contents in szString
// and call the above function passing the string 'by reference'
someFunc(szString, 255);
}
也就是说,只需传递一个指向数组的指针(必须是同一类型)及其大小(这样你就知道在哪里停止并避免异常)。
你可以对任何数据类型的数组做同样的事情,有一个很好的指针教程:http://www.cplusplus.com/doc/tutorial/pointers/
答案 2 :(得分:0)
如果您正在使用最近的编译器,例如最近的gcc和visual studio(提供C ++ 11容器),您可以使用std :: array而不是原始数组,并在阅读时更加清晰。
这是Armen Tsirunyan用std :: array回答:
void f( std::array<int,10> & arr );
你这样称呼它
std::array<int,10> arr;
f(arr);
你可以模板化你的功能
template<class T, int N>
void f( std::array<T,N> & arr );