首页 > 解决方案 > 如何在我的函数中修复“arr 未在范围内声明”?

问题描述

如果我运行此代码:

#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。我该如何解决?

标签: c++arraysfunction

解决方案


您的hourGlass函数无权访问该函数arr范围内的哪个main函数。您可以arr像这样将参数作为参数传递给函数:

int hourGlass(int x, int y, int const (&arr)[7][7]) {
  // ...
}

并像这样调用函数:

hourGlass(i, j, arr)

另外,请注意sum在您的函数中未初始化,因此从中读取会调用未定义的行为。


推荐阅读