C Функция
; ... ... и так далее.main(), и все простые программы могут определять другие дополнительные функции.
Вы можете разделить свой код на различные функции. Как вы разделите код на разные функции — решать вам, но логически разделение обычно основано на том, что каждая функция выполняет определённую задачу.
ФункцияОбъявлениеСообщает компилятору имя функции, тип возвращаемого значения и параметры. ФункцияопределениеПредоставляет фактическое тело функции.
Стандартная библиотека C предоставляет большое количество встроенных функций, которые могут вызывать программы. Например, функцияstrcat()используется для объединения двух строк, функцияmemcpy()используется для копирования памяти в другое место.
У функций есть много других названий, таких как методы, подпрограммы или процедуры, и так далее.
Определение функции
Общая форма определения функции в C выглядит следующим образом:
return_type function_name( parameter list )
{
body of the function
}
В C функция состоит из заголовка функции и тела функции. Ниже приведён список всех частей функции:
- Тип возвращаемого значения:Функция может возвращать значение.return_type— это тип данных значения, возвращаемого функцией. Некоторые функции выполняют нужные операции без возврата значения; в этом случае return_type — это ключевое словоvoid。
- Имя функции:Это фактическое имя функции. Имя функции и список параметров вместе образуют сигнатуру функции.
- Параметры:Параметры действуют как заполнители. Когда функция вызывается, вы передаёте значение параметру, и это значение называется фактическим параметром. Список параметров включает тип, порядок и количество параметров функции. Параметры необязательны; то есть функция может не содержать параметров.
- Тело функции:Тело функции содержит набор операторов, определяющих, что делает функция.
Пример
Ниже приведён исходный код функцииmax(). Эта функция имеет два параметра, num1 и num2, и возвращает большее из двух чисел:
Объявление функции
ОбъявлениефункцииСообщает компилятору имя функции и способ её вызова. Фактическое тело функции можно определить отдельно.
Объявление функции состоит из следующих частей:
return_type function_name( parameter list );
Для функции max(), определённой выше, ниже приведено объявление функции:
int max(int num1, int num2);
В объявлении функции имена параметров не важны; требуются только типы параметров. Поэтому следующее также является допустимым объявлением:
int max(int, int);
Когда вы определяете функцию в одном исходном файле, а вызываете её в другом файле, требуется объявление функции. В этом случае следует объявить функцию в начале файла, который вызывает эту функцию.
Вызов функции
Когда вы создаёте функцию на C, вы определяете, что делает функция, а затем выполняете определённую задачу, вызывая функцию.
Когда программа вызывает функцию, управление программой передаётся вызываемой функции. Вызываемая функция выполняет определённую задачу. Когда выполняется оператор return функции или достигается закрывающая фигурная скобка функции, управление программой возвращается в основную программу.
При вызове функции передайте необходимые параметры, и если функция возвращает значение, вы можете сохранить возвращённое значение. Например:
Пример
Объедините функцию max() и функцию main(), скомпилируйте исходный код. При запуске итогового исполняемого файла получаются следующие результаты:
Max value is : 200
Параметры функции
Если функция должна использовать параметры, необходимо объявить переменные, которые принимают значения параметров. Эти переменные называютсяформальными параметрами функции。
Формальные параметры подобны другим локальным переменным внутри функции; они создаются при входе в функцию и уничтожаются при выходе из функции.
При вызове функции существует два способа передачи параметров в функцию:
| Тип вызова | Описание |
|---|---|
| Передача по значению | Этот метод копирует фактические значения аргументов в формальные параметры функции. В этом случае изменение формальных параметров внутри функции не влияет на фактические аргументы. |
| Передача по ссылке | При передаче указателя формальный параметр является указателем на адрес фактического аргумента. Когда выполняется операция по адресу, на который указывает формальный параметр, это эквивалентно операции над самим фактическим аргументом. |
По умолчанию C используетпередачу по значениюдля передачи параметров. Вообще говоря, это означает, что код внутри функции не может изменить фактические аргументы, используемые для вызова функции.
Другие расширения