Как закончить программу из функции c

от admin

Функция exit

Функция exit выполняет немедленное завершение программы. Завершаемый процесс, как правило, выполняет очистку используемой памяти. Во-вторых, все функции, зарегистрированные вызовами atexit , выполняются в порядке, обратном порядку их регистрации. В таком случае, все используемые программой потоки закрываются, и временные файлы удаляются, и, наконец, управление возвращается ОС или другой программе.

Аргумент параметра value возвращается принимающей стороной (ОС или другой программой).

Как использовать функцию exit() в C++

Сегодня мы поговорим о функции exit() в C++. Как вы наверняка знаете, в C++ выйти из циклов можно при помощи встроенной функции break. Используя функцию exit(), можно точно так же выйти из всей программы C++.

Представьте ситуацию: вы должны сделать некоторые выводы по поводу работы вашей программы. Вы получаете результат и делаете какой-то вывод до того, как программа будет скомпилирована или оценена.

Как завершить работу программы, получив необходимую информацию или результат?

Ответ на поставленный выше вопрос – использовать встроенную функцию exit(). Итак, давайте же подробнее рассмотрим данную функцию и то, как она работает.

Определение функции exit()

Теоретически функция exit() в C++ приводит к завершению соответствующей программы, как только эта функция выполняется, – то есть независимо от того, где она появляется в программе. Функция определена в заголовочном файле stdlib.h, который необходимо включать при использовании функции exit().

Синтаксис функции exit()

Функция exit() использует приведенный ниже синтаксис.

Здесь exit_value — это значение, переданное операционной системе после успешного завершения программы. Данное значение можно проверить в пакетных файлах, где ERROR LEVEL показывает нам возвращаемое значение, предоставленное функцией exit(). Как правило, значение 0 указывает на успешное завершение, а любое другое число сообщает, что произошла какая-то ошибка.

Работа функции exit() в C++

Помните, что функция exit() никогда не возвращает никакого значения. Она завершает процесс и выполняет стандартную очистку завершения программ.

Кроме того, при вызове этой функции автоматические объекты хранилища не уничтожаются.

Посмотрите внимательно на пример ниже:

Вы получите такой вывод:

  • Поскольку пользовательский ввод для представленного выше кода равен нулю (0), выполняется часть else оператора if-else. Дальше компилятор встречает функцию exit() и завершает программу.
  • Оператор print после if-else не выполняется, так как программа уже была завершена функцией exit().

Теперь давайте посмотрим на другой пример, в котором мы попытаемся определить, является число простым или нет.

Использование функции exit()

В приведенной ниже программе вы увидите, как используется функция exit().

Вы получите такой результат:

Давайте рассмотрим приведенный выше код подробнее:

  • Сначала мы взяли пользовательский ввод числа. Нам нужно было проверить, является это число простым или нет.
  • После этого мы применили цикл for, который работает от 2 до n/2, поскольку мы уже знаем, что все числа делятся на 1, а число неделимо на числа, превышающие его половину.
  • Внутри цикла for мы проверили, делится ли число на итератор цикла в данный момент. Если это так, мы можем напрямую заключить, что число не является простым, и завершить программу с помощью функции exit().
  • В противном случае цикл продолжает проверку. После выполнения всей структуры цикла программа объявляет число простым.

Заключение

В этом руководстве мы изучили работу и использование встроенной функции exit() в C++. Она широко используется для завершения выполнения программы.

Выход из функции

Имеется два способа окончания работы функции и возврата управления в точку вызова. Первый способ, применимый к функциям типа void, предполагает выполнение последнего оператора функции, после чего работа функции заканчивается.

Второй, более универсальный способ, состоит в использовании оператора return.

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

В функциях, возвращающих значение, оператор return связан со значением выражения, например:

return 0; // возвращается значение константы

В функциях, не возвращающих значения (имеющих тип void), может использоваться операторreturn, не связанный с каким-либо выражением:

return; // осуществляется выход из функции

Организация памяти при выполнении программы

Исполнимый файл программы загружается для выполнения в основную (оперативную) память компьютера. При этом доступная программе память разделяется на четыре области (сегмента). Одна из этих областей отводится под программный код, вторая – под глобальные и статические (объявленные как static) данные программы, третья, организованная по принципустека, – под локальные переменные ее функций, четвертая – это область динамической памяти, “куча” (heap), которая может быть использована для работы с данными, размер или необходимость которых заранее неизвестны.

Читать:
Как отключить датчик шума на светодиодном светильнике

Любое объявление переменной в программе предполагает резервирование для нее участка памяти компьютера. Память под глобальные и статические переменные программы резервируется в области данных на все время выполнения программы, под формальные параметры и локальные переменные функции – в стеке на время выполнения этой функции. Количество резервируемых байтов памяти определяется типом данных, указанным в объявлении. Байты памяти компьютера пронумерованы, номера этих байтов принято называть адресами, номер начального байта участка памяти, выделенного для переменной, –адресомпеременной.

Правила видимости имен для функций

Правила видимости именопределяют, какие имена “видны” в каждой конкретной точке программы. Каждая функция имеет своюобласть видимости.

Переменные, определенные вне функций – глобальныепеременные, они “видны” во всех функциях программы, расположенных после объявления таких переменных. Переменные эти “живут” столько, сколько и сама программа.

int x; // глобальная переменная

x = a * a; // изменение значения глобальной переменной x

cout << x; // использование значения глобальной переменной x

Переменные, объявленные внутри функции, называются локальнымипеременными, они “видны” только в данной функции. Локальные переменные создаются при входе в функцию и уничтожаются при выходе из нее. Поэтому локальные переменные не могут сохранять значения между вызовами функций. Единственным исключением из этого правила являются переменные, объявленные со спецификаторомstatic. Он заставляет компилятор воспринимать данную переменную как глобальную, хотя область видимости по-прежнему ограничена функцией.

Формальные параметры функции (переменные, получающие значения, указанные при вызове этой функции) ведут себя так же, как и обычные локальные переменные, то есть создаются при входе в функцию и уничтожаются при выходе из нее.

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

В функциях могут использоваться имена локальных переменных и формальных параметров, совпадающие с именами глобальных переменных программы. В этом случае внутри функции «приоритет» в использовании имен отдается локальным объявлениям.

Поскольку в C++ не допускается определение функции внутри другой функции, все функции находятся на одном уровне видимости. В каждой функции известна и может быть вызвана любая объявленная ранее (посредством прототипа или определения) функция.

exit(1) в C++

exit(1) в C++

В этой статье объясняется, как использовать функцию exit() в C++.

Please enable JavaScript

Используйте функцию exit для завершения программы C++ с кодом состояния

Запущенную программу обычно называют процессом в операционной системе, и у нее есть свой жизненный цикл, который представлен в виде различных состояний. Существуют давно работающие программы, такие как веб-серверы, но даже они должны быть остановлены при некоторых обстоятельствах или путем доставки сигнала пользователя. Завершение процесса можно вызвать с помощью функции exit() , которая является частью стандарта C и включена в C++. Он принимает один целочисленный аргумент, указывающий статус завершения программы, который может быть прочитан из родительского процесса, если дочерний процесс ожидает.

Обычное значение кода статуса успешного возврата — 0 , и все, кроме нуля, считается кодом ошибки, который может соответствовать заранее определенному сценарию. Обратите внимание, что есть два макро-выражения, называемые EXIT_SUCCESS и EXIT_FAILURE для обозначения соответствующих кодов выхода, переданных вызову exit . Как правило, программа имеет несколько файловых потоков и открытых временных файлов, которые закрываются или удаляются автоматически при вызове exit .

Используйте exit(1) для завершения программы C++ с кодом состояния сбоя

Функция exit со значением аргумента 1 используется для обозначения завершения с ошибкой. Некоторые функции, возвращающие значение кода состояния успешного вызова, могут быть объединены с условным оператором, который проверяет возвращаемое значение и выходит из программы в случае возникновения ошибки. Обратите внимание, что exit(1) аналогичен вызову exit(EXIT_FAILURE) .

Еще одна полезная особенность функции exit() — выполнение специально зарегистрированных функций до окончательного завершения программы. Эти функции могут быть определены как обычные функции, и для того, чтобы они вызывались по завершении, они должны быть зарегистрированы с помощью функции atexit . atexit является частью стандартной библиотеки и принимает указатель на функцию в качестве единственного аргумента. Обратите внимание, что несколько функций могут быть зарегистрированы с помощью нескольких вызовов atexit , и каждая из них вызывается в обратном порядке после выполнения exit .

Похожие статьи