如何通过引用将数组传递给函数?

时间:2012-01-10 23:04:58

标签: c++ arrays string

我正在寻找如何将一个字符串/数组传递给一个函数,我试图通过值传递,但它似乎不起作用,我已经在线查看并通过引用看到但似乎没有正在工作。

有人可以帮忙吗?

3 个答案:

答案 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 );