繁体   English   中英

如何修复我的函数中的“arr 未在范围内声明”?

[英]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::vectorstd::array ,并将其作为函数参数传递。

暂无
暂无

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

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