#c #arrays #runtime #runtime-error
#c #массивы #время выполнения #время выполнения-ошибка
Вопрос:
Я нахожусь на ранних стадиях своей программы, и сейчас я просто пытаюсь инициализировать 2D-массив для хранения всех тире, но я продолжаю получать ошибку ECX_BAD_ACCESS. Кажется, что мой код работает с квадратным массивом (например, 5×5 или 6×6), но если я делаю 10 на 5, я получаю ошибку.
void readMatrix(char **twoDarray, int amp;rows, int amp;cols)
{
std::cout << "Enter number of rows for board";
std::cin >> rows;
std::cout << "Enter number of columns for board";
std::cin >> cols;
//dynamic 2D array initialization
twoDarray = new char*[rows];
for(int i = 0; i < cols; i)
twoDarray[i] = new char[rows];
//set elements of array to dashes
for(int i = 0; i < rows; i)
for(int j = 0; j < cols; j){
twoDarray[i][j] = '-';
}
//printing the array
for(int i = 0; i < rows; i){
std::cout << " " << std::endl;
for(int j = 0; j < cols; j)
std::cout << twoDarray[i][j] << " ";
}
}
Ответ №1:
Ваш первый цикл for должен переходить от 0 к #rows, а не #cols . Кроме того, в теле того же цикла выделяются столбцы, а не строки.