cplus-plus.ru logo
Мы переехали на cplus-plus.ru
Главная страница В закладкиО сайтеКарта сайта
Добавить в закладки

Меню сайта

Полезные ссылки

Наша рассылка
Подписаться на рассылку
"C++ : cplus-plus.ru :
Рассылка статей C++"


Друзья сайта
alsproject.ru Выбор выходного разделительного конденсатора

Приветствую Вас, Гость · rss 27-Апр-2024, 01:00
Главная » Статьи » Статьи по C++

Двумерные массивы в 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)
Просмотров: 681 | Рейтинг: 0.0/0