Переменные в c++
Недавно столкнулся с проблемой по поводу использовании переменных в функции. В коде у меня есть массив was[n][m] который надо использовать в одной функции, но компилятор сообщает об ошибке. Пожалуйста подскажите как решить проблему. Вот код
#include <bits/stdc++.h>
using namespace std;
void search(int i, int j){
if (was[i][j]) cout << 1;
}
int main(){
int n, m;
cin >> n >> m;
int was[n][m];
was[0][0] = 1;
search(0, 0);
}
Требуется использовать массив в функции search()
Ответы (3 шт):
Ну вот, примерно так:
using namespace std;
void search(const vector<vector<int>& was, int i, int j)
{
if (was[i][j]) cout << 1;
}
int main(){
int n, m;
cin >> n >> m;
vector<vector<int> was(n, vector<int>(m));
was[0][0] = 1;
search(was, 0, 0);
}
1)Здравствуйте, Ваша функция "не видит" массив, т.к. он находится в другой функции int main() .Объявите массив глобально, т.е. сразу после "using namespace std;". 2)Размер статического массива в c++ не может быть переменным значением, а только константным.
1) У вас ошибка в объявлении массива. Например, это не будет работать на компиляторе MS Visual C++.
2) Массив was объявлен локально в функции int main, в функции search он будет недоступен
Мой вариант:
#include <iostream>
using namespace std;
int** was;
void search(int i, int j)
{
if (was[i][j])
cout << 1;
}
int main()
{
int n, m;
cin >> n >> m;
was = (int**) calloc(n, sizeof(int*));
for (int i = 0; i < n; ++i)
was[i] = (int*)calloc(m, sizeof(int));
was[0][0] = 1;
search(0, 0);
}
Так же, вы можете передавать was в функцию, во избежание использования глобальных переменных