Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
shpory_po_poryadku_proga.doc
Скачиваний:
4
Добавлен:
15.04.2019
Размер:
1.07 Mб
Скачать

5.1. Объявление и определение функций .

При объявлении функции необходимо указать типы параметров и имя функции. Имя функции – идентификатор, в скобках – формальные параметры.

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

int step(int ,int ); //объявление int step(int x,int n) //определение {

//тело фнкции

return r;// возвращает результат вычислений и завершает выполнение функции. }

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

Но функция может вернуть указатель на область памяти, в которой хранится массив и может вернуть указатель на функцию.

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

5.2. Функция main()

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

5.3. Функция main() с параметрами

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

- Идентификатор_типа main() { } - Идентификатор_типа main (int argc, char* argv[], char *envp[]) { } параметры main - аргументы командной строки.

int main ( int argc , char** argv , char** envp); где argc – число параметров(слов) в командной строке, которые записываются в массив argv argv – массив указателей на строки envp – указатель на массив указателей на переменные среды

Последняя строка в массиве строк envp имеет нулевую длину.

5.4. Обмен данными между функциями. Возвращаемое значение

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

Для вызова функции используется конструкция

имяфункции ( [ фактическиепараметры ] ), т.е. вместо формальных параметров подставляются фактические параметры.

Фактический параметр может быть константой, переменной или более сложным выражением.

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

Фактический параметр - это конкретное значение, которое присваивается переменной, называемой формальным параметром.

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

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

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

Но функция может вернуть указатель на область памяти, в которой хранится массив и может вернуть указатель на функцию.

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

5.5. Параметры функции

Все параметры в функции C передаются по значению, т. е. при вызове функции в стек заносится копия значения фактического параметра, и операторы в теле функции работают с этой копией. Поэтому значения фактических параметров, которые переданы в функцию, не изменяются. Передача параметров по значению предусматривает следующие действия:

1. При компиляции функции выделяются участки памяти для формальных параметров. 2.Формальные параметры - это внутренние объекты функции. Для параметров типа float формируются объекты типа double. Для параметров типа char, short int создаются объекты типа int. 3.Если параметром является массив, то формируется указатель на начало этого массива и он служит представлением массива-параметра в теле функции.

4. Вычисляются значения выражений, использованных в качестве фактических параметров при вызове функции. 5. Значения выражений-фактических параметров заносятся в участки памяти, выделенные для формальных параметров функции. 6. В теле функции выполняется обработка с использованием значений внутренних объектов-параметров, и результат передается в точку вызова функции как возвращаемое ею значение. 7. Никакого влияния на фактические параметры функция не оказывает.

Для того чтобы обеспечить изменение передаваемых в функцию фактических параметров, необходимо явно передать адрес изменяемого параметра. Этого можно достичь двумя способами: 1) в качестве формального параметра описать указатель на тип, с которым будем работать; 2) использовать ссылки.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]