Проблемы с массивом Noobish: ошибка проверки времени выполнения № 2 - стек вокруг переменной 'arr' поврежден
Я буду очень честен / честен здесь - я новичок в C++, в компьютерном программировании в целом и в дополнение к этому сайту. Я просто предрежу свой вопрос, сказав, что на самом деле я смотрел на другие вопросы, возможно, связанные с моими, но мне казалось, что они выходят за рамки моей компетенции. С учетом сказанного вот моя проблема:
Я получаю это сообщение об ошибке:
"Ошибка проверки времени выполнения № 2 - стек вокруг переменной" arr "поврежден".
Вот мой код Это просто базовая мелочь для некоторой практики массива. Функция multiTable выводит таблицу умножения:
#include <iostream>
#include <iomanip>
using namespace std;
void multiTable();
int main()
{
multiTable();
return 0;
}
//Prints a 9 by 9 multiplication table;
void multiTable()
{
const int row = 9, col = 9;
int arr[row][col];
for(int i = 1; i <= row; i++)
{
for(int j = 1; j <= col; j++)
{
arr[i][j] = j * i;
cout << setw(3);
cout << arr[i][j];
}
cout << endl;
}
}
Я также хочу упомянуть, что вместо вызова функции, если я просто включил весь код, содержащийся в теле функции, в main, я не получаю ошибку времени выполнения. Почему, когда оно содержится внутри функции, я получаю ошибку времени выполнения, но когда она только в main, я не получаю ошибку? И, конечно, что я должен изменить, чтобы вызов функции не вызывал ошибку?
1 ответ
Это ваши проблемы: for(int i = 1; i <= row; i++)
а также for(int j = 1; j <= col; j++)
отсчет массива начинается с 0
, Так что ваши циклы for должны быть такими (начиная с 0
и опуская =
часть от <=
):
for(int i = 0; i < row; i++)
а также for(int j = 0; j < col; j++)