[英]How can I fix 'arr is not declared in scope' in my function?
如果我运行此代码:
#include<bits/stdc++.h>
using namespace std;
int hourGlass(int x, int y) {
int sum;
for (int a=y; a<=y+2; a++) {
sum += arr[x][a];
sum += arr[x+2][a];
}
return sum;
}
int main(){
int arr[7][7];
for (int i=0; i<=5; i++) {
for (int j=0; j<=5; j++) {
cin >> arr[i][j];
}
}
for (int i=0; i<=3; i++) {
for (int j=0; j<=3; j++) {
cout << hourGlass(i,j);
}
}
}
它给出了错误'arr' was not declare on this scope
。 我该如何解决?
您的hourGlass
函数无权访问main
函数范围内的arr
。 您可以将arr
作为参数传递给函数,如下所示:
int hourGlass(int x, int y, int const (&arr)[7][7]) {
// ...
}
并像这样调用函数:
hourGlass(i, j, arr)
另外,请注意sum
在您的函数中未初始化,因此读取它会调用未定义的行为。
只需将int arr[7][7]
移出main()
函数并将其放在int hourGlass(int x, int y)
。 这将使它成为全局的,也就是说,对它之后声明的所有函数都是可见的(不仅仅是单个函数)。
或者,也许是更好的解决方案(但仅限于 C++),使用一些 STL 容器,例如std::vector
或std::array
,并将其作为函数参数传递。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.