c++ - 如何在我的函数中修复“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
。我该如何解决?
解决方案
您的hourGlass
函数无权访问该函数arr
范围内的哪个main
函数。您可以arr
像这样将参数作为参数传递给函数:
int hourGlass(int x, int y, int const (&arr)[7][7]) {
// ...
}
并像这样调用函数:
hourGlass(i, j, arr)
另外,请注意sum
在您的函数中未初始化,因此从中读取会调用未定义的行为。
推荐阅读
- struct - Elixir 结构真的不可变吗?
- php - 使用 PHP 将图像像素值存储在二维数组中,然后使用循环访问它们
- javascript - 如何从 ajax 调用中获取 img 数据(如像素)?
- python - 熊猫问题从数据框列中减去一个系列
- sql - 循环遍历 SQL Server 中的 Temp 表记录
- angular - NGRX 实体:如何将 action.payload 分配给 UpsertOne 中的 state 属性
- django - 如何获取将在基于 django 类的视图中执行的最终源代码?
- performance - 实体框架生成的 SQL 缺少连接
- angular - URL请求后Angular订阅Observable
- mongodb - 猫鼬填充数组中的单个项目