ВУЗ:
Составители:
Рубрика:
64
for (int i=0; i<n; i++){ count<<”\n строка”<<(i+1)<<”:”;
for (int j; j<n; j++)
cout<<”\t”<<A[i][j];
cout<<\n”;
}
}
В функции main матрица представлена двумерным массивом
double A[4][4]. Такой массив нельзя непосредственно использовать в
качестве фактического параметра, соответствующего формальному
double *p[]. Поэтому вводится дополнительный вспомогательный мас-
сив указателей double *ptr[]. В качестве начальных значений элементам
этого массива присваиваются адреса строк матрицы, преобразованные к
типу double*.
Многомерный массив с переменными размерами может быть ди-
намически сформирован внутри функции. В вызываемую функцию его
можно передать как указатель на одномерный массив указателей на од-
номерные массивы с элементами известной размерности и заданного
типа.
В качестве примера приведем функцию, формирующую единич-
ную матрицу порядка n.
int** singl (int n){
int **p=new int*[n];
/* Тип int* [n] – массив указателей на целые.
Операция new возвращает указатель на выделенную память под этот
массив и тип переменной p есть int**. Таким образом, р есть массив
указателей на строки целых будущей матрицы.
*/
if (p = = NULL){
cout<<”Динамический массив не создан!\n”;
exit(1);
}
// цикл создания одномерных массивов – строк матрицы:
for (int i=0; i<n; i++){
p[i]=new int[n];
if( !p[i] ){cout<<”Не создана динамическая строка!\n”; exit(1);}
for (int j=0; j<n; j++)
p[i][j]=(i = =j )? 1: 0;
}
return p;
Страницы
- « первая
- ‹ предыдущая
- …
- 60
- 61
- 62
- 63
- 64
- …
- следующая ›
- последняя »
