|
Программирование >> Процедурные приложения
exit2.cpp Вариант предыдущей программы, в котором вместо инструкции return применяется функция exit() . #include <iostream.h> #include <stdlib.h> #define LIMIT 30 int main () { int irow, irequested qty, iscores [LIMIT]; float fsum =0,imin score, imax score, faverage; cout << \nВведите число значений ряда: ; cin >> irequested qty; if(irequested qty > LIMIT) { cout<< \пВы можете ввести не более << LIMIT<< значений.\n cout<< \n >>> Программа завершена. <\n ; exit(EXIT FAILURE); for(irow = 0; irow < irequested qty; irow++) { cout << \nВведите << irow+1 << -и элемент ряда: cin >> iscores[irow]; for(irow = 0; irow < irequested qty; irow++) fsum = fsum + iscores[irow]; faverage = fsum/(float)irequested qty; imin score = imax score = iscores[0]; for(irow = 0; irow < irequested qty; irow++) { if(iscores[irow] > imax score) imax score = iscores[irow]; if(iscores[irow] < imin score) imin score = iscores[irow]; } cout<< \nМаксимальное значение = << imax score; cout<< \nМинимальное значение = << imin score; cout<< \nСреднее значение = << faverage; exit(EXIT SUCCESS); ) Функция atexit( ) При завершении программы, как в нормальном режиме, так и с помощью функции exit() , иногда необходимо выполнить некоторые финальные действия. Для этого существует функция atexit(), которая в качестве аргумента принимает имя функции, регистрируя ее как финальную . В следующей программе на языке С реализован этот принцип: * atexit. с В этой программе на языке С демонстрируется способ задания процедур, * выполняемых при завершении программы, а также показывается, как влияет * порядок их регистрации на очередность выполнения. #include <stdio.h> #include <stdlib.h> void atexit f nl (void) ; void atexit fn2(void); void atexit fn3(void) ; int main() atexit(atexit fnl); atexit(atexit fn2); atexit(atexit fn3); printf( Программа atexit запущена.\n ); printf( Программа atexit завершена .\n\n ) printf ( > >> <<<<<<<<<<<\n\n ) ; return (0); void atexit fnl(void) { printf( Запущена функция atexit fnl.\n ); } void atexit fn2(void) ( printf( Запущена функция atexit fn2.\n ); 1 void atexit fn3(void) { printf ( Запущена функция atexit fn3An ) ; ) При выполнении программы на экран будет выведена следующая информация: Программа atexit запущена. Программа atexit завершена. >>>>>>>>>>> <<<<<<<<<<< Запущена функция atexit fn3. Запущена функция atexit fn2. Запущена функция atexit fnl. Единственным аргументом функции atexit() является имя регистрируемой функции, которая будет вызвана при завершении выполнения программы. Эта функция будет вызываться независимо от того, завершается ли программа естественным путем, как в данном примере, или с помощью функции exit(). В действительности функция atexit() ведет список функций, которые будут выполнены при завершении программы. Причём порядок выполнения функций противоположен порядку их регистрации. То есть первая зарегистрированная функция будет выполняться последней, а последняя - первой. Вот почему сообщение о запуске функции atexit fnЗ () появилось раньше, чем сообщение о запуске функции atexit fnl (). Как правило, финальные функции используются для удаления из памяти динамически созданных объектов. Поскольку один объект мог быть создан на основе другого, удаление их из памяти осуществляется в обратном порядке. Глава 7. Функции Прототипы функций o Синтаксис объявления функции o Способы передачи аргументов o Правила видимости переменных o Рекурсия Аргументы функций o Формальные и фактические аргументы o Аргументы типа void o Аргументы типа char o Аргументы типа int o Аргументы типа float o Аргументы типа double o Массивы в качестве аргументов Типы значений, возвращаемых функциями o Тип результата: void o Тип результата: char o Тип результата: Ьоо1 o Тип результата: int o Тип результата: long o Тип результата: float o Тип результата: double Аргументы командной строки o Текстовые аргументы o Целочисленные аргументы o Аргументы с плавающей запятой Дополнительные особенности функций o Макроподстановка функций o Перегрузка функций o Функции с переменным числом аргументов Область видимости переменных o Попытка получить доступ к переменной вне ее области видимости
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0.001
При копировании материалов приветствуются ссылки. |