Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Аппарат формальных и фактических аргументов

Поиск

Формальные аргументы - это объекты программы, в терминах которых описано тело в описании функции.

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

Окончательно синтаксис объявления (описания) функции:

<Тип результата> <имя функции> ([<декларации формальных аргументов>]) {<Декларации> <Тело функции> }

Окончательно синтаксис вызова функции:

<Имя функции> ([<список фактических аргументов>]) Пример 4: Определим функцию для нахождения максимального значения среди двух цiлочисельних значений (a, b); имя функции - max_int INT max_int (int a, int b) { return (a> b)? a: b; } main () {Int x, y, z; int m1, m2; scanf ("% d% d% d", & x, & y, & z); / * Max среди x, y, z * / m1 = max_int (x, y); m2 = max_int (m1, z); printf ("\ n max (% d,% d,% d) =% d", x, y, z, m2); }

Выполним классификацию аргументов функций из этого примера:

имя функции | формальные аргументы | фактические аргументы _____________|___________________________________________________________main | - | -_____________|______________________|____________________________________printf | в библиотеке <stdio.h> | "\ n max (% d,% d,% d) =% d", x, y, z, m2_____________|______________________|____________________________________scanf | в библиотеке <stdio.h> | "% d% d% d", & x, & y, & z_____________|______________________|____________________________________max_int | a, b | x, y | | M1, z_____________|______________________|____________________________________

Аргументы функций также разделяют на:

  1. входные аргументы;
  2. выходные аргументы;
  3. аргументы, которые обновляются.

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

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

Аргументы, обновляются выполняет роль входных I выходных аргументов одновременно: використуються в функции для формирования результатов, меняются в ходе выполнения тела функции, они формируются в функции.

Выполним классификацию аргументов функциям по примеру 4 по признаку входные аргументы / выходные аргументы / аргументы, которые обновляются.

имя функции | входные аргументы | выходные аргументы | аргументы, | | | Которые обновляются _____________|_________________|__________________|_________________ max_int | a, b | - | -_____________|_________________|__________________|_________________ printf | "\ n max (% d,% d,% d) | - | - | =% D ", x, y, z, m2 | |_____________|_________________|__________________|_________________ scanf | "% d% d% d" | & x, & y, & z | -_____________|_________________|__________________|_________________

Прототип функции

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

Синтаксис:

<Тип результата> <имя функции> ();

или более "жесткий" вариант:

<Тип результата> <имя функции> (<декларации типов аргументов>);

Поэтому в примере 4 в функции main необходима декларация:

INT max_int (int, int); / * 1 * /

Она сообщает, что в функции main Ожидается вызов функции max_int с двумя цiлочисельнимы аргументами, которая возвращает результат целого типа.

Этот прототип также можно записать иначе:

INT max_int (); / * 2 * /INT max_int (int a, int b); / * 3 * /

Третий вариант iлюструе главный принцип прототипа функции - имена аргументов, указанi в прототипi, не обвьязково должны спiвпадаты с именами формальных аргументов в описании функции.

 


 


Тема 8. Передача аргументов функций

Цель: познакомиться со способами передачи аргументов функциям (по значению, по имени, по ссылке), с особенностями передачи аргументов в языке Си, с особыми случаями передачи аргументов (массивов, структур), с оператором ->, с аргументами функции main.

Способы передачи аргументов

Передача аргументов по значению

Передача аргументов по имени

Передача аргументов по ссылке

Особенности передачи аргументов в языке Си

Особые случаи передачи аргументов

Передача аргументом одномерного массива

Передача аргументом многомерного массива

Передача аргументом структуры

Аргументы командной строки

Способы передачи аргументов

В абсолютном большинстве языков программирования существует три способа передачи аргументов

  • по значению;
  • по имени;
  • по ссылке.


Поделиться:


Последнее изменение этой страницы: 2017-01-27; просмотров: 435; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.218.3.204 (0.005 с.)