Урок 96. Параметры и аргументы функций

   | 

   | 

 Обновлено 2 Апр 2018  | 

 3308

 ǀ   2 

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

 Урок 12. Функции и return

 Урок 13. Параметры и аргументы функций

 Урок 19. Предварительное объявление и прототип функции

 Урок 20. Многофайловые программы

 Урок 21. Заголовочные файлы

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

Параметры vs Аргументы

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



Параметр функции (или еще формальный параметр) — это переменная, объявленная в объявлении функции:

Аргумент (или еще фактический параметр) — это значение, которое передает в функцию вызывающий объект (caller):

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

При вызове boo() с аргументами 4 и 5, создадутся параметры x и y функции boo() и им присвоятся соответствующие значения: 4 и 5. Результатом будет x = 4 и y = 5.

Примечание (спасибо Алексею): В примере выше порядок обработки параметров в функции boo() будет справа налево, т.е. сначала создастся переменная y и ей присвоится значение 5, а затем уже создастся x и ему присвоится значение 4. Порядок, в котором инициализируются параметры в круглых скобках функции, определяет каждый компилятор отдельно, так как С++ явно не указывает этот порядок обработки. С параметрами-переменными это не столько важно и критично, но если вы будете использовать в качестве параметров функции вызовы других функций (что является плохой практикой и не рекомендуется делать), то результат может быть не определен.

Например:

Результат выполнения программы выше:

y = 5
x = 4

Хотя параметры не объявлены внутри блока функции, но они имеют локальную область видимости. Это означает, что они создаются при вызове функции и уничтожаются, когда блок функции завершается:

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

Оценить статью:

Звёзд: 1Звёзд: 2Звёзд: 3Звёзд: 4Звёзд: 5 (32 оценок, среднее: 4,91 из 5)
Загрузка...
Подписаться на обновления:

Комментариев: 2

  1. Алексей:

    Просто хочу уточнить, что здесь описано не совсем верно. Функция считывает параметры в обратном порядке (по крайней мере в Visual Studio 2017).
    И если для переменных это не критически важно, то при передаче функции в качестве аргумента (такое конечно лучше не творить, но все же) могут возникнуть ошибки, например:

    выводом будет:
    y = 5
    x = 4

    1. Li4ik Li4ik:

      Вы правы. С++ явно не указывает порядок инициализации параметров в функции и уже каждый компилятор сам решает в каком порядке ему их инициализировать. Статью обновил.

Добавить комментарий для Алексей Отменить ответ

Ваш e-mail не будет опубликован. Обязательные поля помечены *

ПОДПИСЫВАЙТЕСЬ

НА КАНАЛ RAVESLI В TELEGRAM

@ravesli

ПОДПИСАТЬСЯ БЕСПЛАТНО