繁体   English   中英

如何将二维数组传递给 function (C++)?

[英]How do I pass a 2D array into a function (C++)?

我有两个 for 循环,它们处理来自文件的数据并将其存储到数组中,方便地适当地索引每个元素。 我想将此数组传递到 function 并对其执行一些计算,但它给了我一个错误:“错误:没有匹配的 function 调用'year_range'”。

我试图将它作为 item[][] 传递,但是编译器希望我指定索引。 我想将整个数组传递到 function 中,这样我就可以对其进行一些计算。

void year_range(string item[]);

int main()
{
    string item[75][5];
    for (int row = 0; row < 74; row++)
    {
        for (int col = 0; col < 4; col++)
        {
            getline(fin,item[row][col], ',');
        }
        getline(fin, item[row][4], '\n');  
    }
    year_range(item);
}

void year_range(string item[])
{
  // processing item array
}

我希望整个“item”数组成功通过function year_range,没有错误。

它想要第二维的长度。 尝试:

void year_range(string item[][5]);

请注意,这仅适用于第二维为 5 的 arrays。要获得更好、更通用的方法,请参阅此半重复问题

另请注意:您必须在您的实现和声明中更改它,即使我没有在您的实现中显示更改它。

 void year_range(string item[]);

这里,参数的类型是“指向字符串的指针”。

 string item[75][5]; year_range(item);

当您使用数组作为值时,它将隐式转换为指向第一个元素的指针。 这叫做腐烂。 item是一个由 5 个字符串组成的 (75) arrays 数组。 由于元素是 5 个字符串的 arrays,因此指向元素的指针是指向 5 个字符串的数组的指针。

因此,您将一个指向 5 个字符串数组的指针传递给一个接受指向字符串的指针的 function。 由 5 个字符串组成的数组与字符串的类型不同,因此这不起作用。 您可以更改year_range以接受指向 5 个字符串的指针,该字符串与您尝试传递的(衰减的) object 匹配:

void year_range(string item[][5]);  // like this
void year_range(string (*item)[5]); // or this

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM