[英]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.