Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
функции_new.docx
Скачиваний:
0
Добавлен:
11.02.2026
Размер:
101.67 Кб
Скачать

Int main ( ){

int m, n, i, j;

cin>>m>>n;

double **ptr = new float* [m]; // динамическое выделение памяти

// на массив указателей на строки массива

for (i=0; i< m; i++)

ptr[i] = new double [n]; //динамическое выделение памяти на

// значения в строках массива

mas (ptr, m, n); //вызов функции

for (i = 0; i < m; i++)

{ cout << endl;

for (j = 0; j < n; j++)

cout << setw (8) << ptr [i][j];

}

for (i=0; i< m; i++) delete ptr[i]; //освобождение памяти на значения

//в строках

delete [ ] ptr; //освобождение памяти на массив указателей на строки

system("pause");

return 0;

}

  1. Формальные параметры указатели - для передачи многомерного массива. Параметрами являются указатель на подмассив и количество подмассивов в многомерном массиве.

При этом размеры подмассива должны быть фиксированы.

<type> (* имя_указателя) [N1][ N2] [N3]…[NN]; - определение указателя на массив размерностью [N1][N2]…[NN] с элементами type.

Для иллюстрации определим функцию, заполняющую натуральными числами трехмерный массив, состоящий из произвольного числа матриц 3х4:

Void mas (int (*lp) [3][4], int n)

{ int i, j, k, t=1;

for (i=0; i < n; i++) {cout << "\n\n";

for (j=0; j < 3; j++) {cout << "\n";

for (k=0; k< 4; k++) { lp[i][j][k] = t++;cout <<lp [i][j][k] << " ";

} } }

}

Int main ()

{ int i, j, k, n; cin >> n; //вводится количество матриц в трехмерном массиве

int (*tp) [3][4]; //определен указатель на матрицу

tp = new int [ n] [3][4];

/* выделена динамическая память на n матриц, и адрес первой матрицы присвоен указателю tp */

mas (tp, n);

//далее можно работать с элементами массива tp[i][j][k]

delete [ ] tp; //освобождение памяти

return 0;

}

3.Результат функции, возвращаемый с помощью оператора return.

Оператор return - оператор возврата управления программой и значения в точку вызова функции. С помощью этого оператора функция может вернуть одно скалярное значение любого типа. Форма оператора:

Return (выражение);

выражение вычисляется, результат преобразуется к типу возвращаемого значения и передается в точку вызова функции.

К скалярам относятся данные простых стандартных типов, указатели и ссылки. Рассмотрим некоторые возможные результаты работы функций, возвращаемые с помощью оператора return:

  1. скалярное значение любого простого типа, например, return (5);

  2. указатель на скаляр, массив;

  3. ссылка - возвращаемый результат функции

Результат указатель на скаляр, массив

Функция возвращает указатель на скаляр - возвращает адрес скаляра. Определим функцию поиска числа в произвольном массиве. Функция возвращает адрес числа или NULL, то есть указатель на элемент массива.

Int * poisk (int*c, int m, int n)

/* c – указатель на первый элемент массива, mколичество элементов массива, n- искомое число*/

{

for (int i =0; i < m; i++)

{if (*c = = n) return (c);

c++;

}

return (0);

}

Int main ()

{int a [5][4] = {…}, i, j;

int*p = poisk (*a, 20 ,7); //*a-адрес первого элемента, 20 - общее количество //элементов, ищем число 7

if (p== 0) cout << "число отсутствует";

else {cout << (i = (p - *a) / 4); //номер строки

cout << (j = p - *ai * 4);}; //номер столбца

system("pause");

return 0;

}

Результат функции – указатель на одномерный массив.

Используя указатель на элемент массива можно в теле функции выделить память на одномерный динамический массив.

Этот указатель можно возвратить из функции с помощью оператора return, и тем самым возвратить "указатель на одномерный массив".

Определим функцию, формирующую одномерный динамический массив, заполняя его значениями, вводимыми с клавиатуры. Формальный параметр функции – количество элементов в формируемом массиве. Функция возвращает указатель на первый элемент массива:

float* vvod (int n)

{

float*p = new float [n]; // динамическое выделение памяти под

//массив,

for (int i=0; i < n; i++) cin >> p[i]; //заполнение элементов

//массива

return p; //возвращение массива;

}