Передача многомерных массивов в функцию
При передаче многомерных массивов в функцию все размерности должны передаваться в качестве параметров. По определению многомерные массивы в Си и СИ++ не существуют. Если мы описываем массив с несколькими индексами, например, массив int mas[3][4], то это означает, что мы описали одномерный массив mas, элементами которого являются указатели на одномерные массивы int[4].
Пример: Транспонирование квадратной матрицы
Если определить заголовок функции:
void transp(int a[][],int n){…..} – то получится, что мы хотим передать в функцию массив с неизвестными размерами. По определению массив должен быть одномерным, и его элементы должны иметь одинаковую длину. При передаче массива ничего не сказано и о размере элементов, поэтому компилятор выдаст ошибку.
Самый простой вариант решения этой проблемы определить функцию следующим образом:
void transp(int a[][4],int n), тогда размер каждой строки будет 4, а размер массива указателей будет вычисляться.
#include<iostream.h>
const int N=4;//глобальная переменная
void transp(int a[][N],int n)
{
int r;
for(int I=0;I<n;I++)
for(int j=0;j<n;j++)
if(I<j)
{
r[a[I][j];a[I][j]=a[j][I];a[j][I]=r;
}
}
void main()
{
int mas[N][N];
for(int I=0;I<N;I++)
for(int j=0;j<Nlj++)
cin>>mas[I][j];
for(I=0;I<N;I++)
{
for(j=0;j<N;j++)
cout<<mas[I][j]
cout<<”\n”;
}
transp(N,mas);
for(I=0;I<N;I++)
{
for(j=0;j<N;j++)
cout<<mas[I][j]
cout<<”\n”;
}
}
Дата добавления: 2015-09-18; просмотров: 681;