Добавить в закладки |
|
Меню сайта |
|
Полезные ссылки |
|
Друзья сайта |
|
|
Приветствую Вас, Гость · |
30-Янв-2025, 12:08 |
|
Двумерные массивы в C++ как параметры
Когда параметром является двумерный массив, его вторая размерность обязательно указывается в объявлении функции
float a[ ][4].
Объявление параметра как float a[ ][ ] недопустимо. Нет ничего странного в том, что компилятору требуется вторая размерность, ведь именно она определяет размер тех одномерных массивов, которые составляют двумерный.
Пример. Определить функцию, которая распечатывает двумерный массив а[3][4] в виде матрицы.
void print (float a[] [4], int size1) { for (int i = 0; i < size1; i++) { for (int j = 0; j < 4; j++) cout « a[i][j] « " "; cout « endl; } }
Заголовок функции в предыдущем примере мог быть и таким: void print (float (*a)[4], int size1) Параметр a здесь является указателем на одномерный массив из четырех вещественных чисел.
Если вам не нравится передавать в функцию двумерные массивы, можно передать двумерный массив как одномерный, и в теле функции вычислять местоположение элемента.
void print1(float a[], int size1, int size2) { for (int i = 0; i < size1; i++) { for (int j = 0; j < size2; j++) cout « a[i * size2 + j] « " "; cout « endl ; } }
Чтобы правильно вызвать эту функцию, надо передать ей в первом параметре адрес не двумерного массива m, а одномерного *m, иными словами не float**, а просто float*.
float m[] [4] = {{11, 12, 13, 14}, {21, 22, 23, 24}, {31, 32, 33, 34}}; print1(*m, 3, 4);
Этого же можно добиться явным приведением типа. print1((float*)m, 3, 4); |
Категория: Статьи по C++ | Добавил: FazaNaka (13-Окт-2010)
|
Просмотров: 713
| Рейтинг: 0.0/0 |
|
|