- •Введение
- •Разработка функций рекурсивных и без рекурсии, использующих параметр – функцию и оператор return
- •Return (выражение);
- •Функция возвращает значение любого простого типа
- •Функция возвращает указатель на скаляр, массив, структуру, файл или функцию
- •А) Функция возвращает указатель на скаляр
- •Б) Функция возвращает указатель на первый элемент одномерного массива
- •3) Ссылка - возвращаемый результат функции
- •Return имя переменной;
- •2.2.2 Рекурсивные функции
- •2.2.3 Указатели на функции
- •( * Имя указателя) (список фактических параметров);
- •2.2.4 Массивы указателей на функции
- •2.2.5 Определение типа указателя на функцию
- •2.2.6 Указатель на функцию - параметр функции
- •2.3 Задание на выполнение лабораторной работы
- •Порядок выполнения работы
- •Пример выполнения лабораторной работы
- •2.6 Контрольные вопросы
- •2.7 Варианты заданий лабораторной работы
- •Лабораторная работа № 6 Разработка программ с использованием структурированных данных
- •3.1 Цель лабораторной работы
- •Теоретические сведения
- •3.2.1 Структурные типы и структуры
- •Для обращения к элементам, входящим в состав конкретной структуры используются уточненные имена:
- •(*Имя указателя). Имя элемента структуры
- •3.2.2 Инициализация структур
- •3.2.3 Динамическое выделение памяти под структуру и массив структур
- •Элементы структур
- •Элементы структуры могут иметь одинаковый тип, тогда при описании таких элементов можно указывать их общий тип, а имена перечислить через запятую:
- •Struct def { def a , int b; } ; // - ошибка!
- •Strspy ( a.Fio, “ Петров”) ;
- •3.2.5 Структуры и функции
- •3.2.6 Использование массива указателей, инициированного строками
- •3.3 Задание на выполнение лабораторной работы
- •3.4 Порядок выполнения работы
- •3.5. Пример выполнения лабораторной работы
- •3.6 Контрольные вопросы
- •3.7 Варианты заданий лабораторной работы
- •4. Список литературы
А) Функция возвращает указатель на скаляр
Это означает, что функция возвращает адрес скаляра. Рассмотрим это на примере.
Пример: определить и вызвать функцию поиска числа в произвольном целочисленном массиве. Функция возвращает адрес числа или NULL, если такого значения в массиве нет. Тип возвращаемого результата – это тип указателя на элемент массива.
int * poisk ( int*c, int m, int n )
/* параметры:
c – указатель на элемент массив для передачи адреса
первого элемента массива,
m – общее количество элементов массива,
n – искомое число;
функция возвращает значение указателя на искомый элемент массива*/
{ int i, j
for ( i =0 ; i < m ; i++ )
{ if ( *c = = n ) // c – адрес элемента, *c–значение элемента ;
return ( c ) ; // если значение *c совпало с числом n,
c++; // функция завершается и возвращает в точку
// вызова адрес данного элемента, в противном случае –
// увеличиваем значение указателя на величину sizeof( int),
// используя операцию инкремента (++), при этом указатель c
// приобретает значение адреса следующего элемент массива;
}
return (NULL); //если просмотрев все элементы, ни один элемент не
// совпал с n, функция возвращает NULL;
}
void main ( )
{ int a[2][4] = {22.4, 1.2, …} , //определены двумерный
int c[6] = {3.14, 1.4,…} ; // и одномерный массивы с инициализацией;
int*p, i, j;
// Поиск числа 7 в двумерном массиве:
p= poisk ( *a, 8 ,7 ); // результат вызова функции присваивается
// указателю p типа (int*); при вызове передаются
//фактические параметры:
//1 - адрес первого элемента в двумерном массиве –
//это единожды разыменованное имя массива *a,
//2 - общее количество элементов: 2х4 = 8;
//3 - число, которое ищем: 7 ;
if (p== NULL) cout << “ число в матрице отсутствует”;
else { // p -*a - это количество элементов в массиве до числа 7;
cout<< “Номер строки элемента i = ” << (i= (p - *a ) / 4) ;
// здесь используется операция целочисленного деления для
// определения количества заполненных строк;
cout<< “Номер столбца элемента j = ” << ( j = p - *a – i * 4) ;
};
//Поиск числа 7 в одномерном массиве:
p = poisk ( c,6,7);
// адрес первого элемента в одномерном массиве – это имя массива c;
if ( p = = NULL) cout << “ число отсутствует”;
else cout<< “Номер индекса элемента i = ” << (i= p – c );
}
