Cтраница 3
В строке 19 объявляется локальная для функции swap () переменная temp, которой вовсе не обязательно быть указателем: она будет просто хранить значение рх ( т.е. значение переменной х в вызывающей функции) в течение жизни функции. После окончания работы функции переменная temp больше не нужна. [31]
В строке 13 вызывается функция swap (), но обратите внимание на то, что ей передаются именно значения х и у, а не их адреса. Вызывающая функция просто передает свои переменные. [32]
Если вы пишете функцию, которая требует выделения памяти в области динамического обмена, а затем возвращаете этот объект в вызывающую функцию, пересмотрите свой интерфейс. Пусть лучше вызывающая функция выделяет память, а затем передает в другую функцию этот объект как ссылку. Затем, после возвращения объекта из функции, его можно будет удалить в вызывающей функции, где он и был создан. [33]
![]() |
Использование функции, определенной программистом Хороший стиль программирования. [34] |
В качестве имени функции ( имя функции) может использоваться любой допустимый идентификатор. Типом результата, возвращаемого вызывающей функции, является тип возвращаемого значения. Если тип возвращаемо-го значения задан ключевым словом void, то это означает, что функция ничего не возвращает. [35]
У стеков имеется область памяти, выделяемая для автоматических переменных при каждом обращении к функции. Когда функция возвращается в свою вызывающую функцию, эта область для автоматических переменных указанной функции удаляется из стека и эти переменные более не известны программе. [36]
Все функции, включая функцию main, могут быть объявлены с параметрами. Вызываемые функции получают значения параметров из вызывающих функций. Значения параметров функции main могут быть переданы из внешнего окружения. Например, они могут быть переданы из командной строки. [37]
Можно несколько раз щелкнуть на кнопках, вызывающих функции DLL, не закрывая диалоговые окна, выводимые этой DLL Это происходит ввиду того, что первый параметр API-вызова MessageBox равен нулю. [38]
Вы убедились, что передача объектов в функции как ссылок может быть более эффективной, чем передача их как значений. Передача объектов как ссылок позволяет вызываемой функции изменять значения переменных вызывающей функции. [39]
Заметьте, что сами функции FuncA и FuncB изменяют значение внутреннего элемента данных. Так как в их объявлении имеется ключевое слово const, вызывающей функции запрещено производить аналогичные изменения. [40]
Суть программирования на языке C состоит в сокрытии от пользователей функции деталей ее выполнения. Передача параметров с помощью указателей перекладывает ответственность за получение адресов переменных на вызывающую функцию, вместо того чтобы сделать это в теле вызываемой функции. Другое решение той же задачи предлагается в листинге 9.7, в котором показана работа функции swapQ с использованием ссылок. [41]
Поскольку ссылочные параметры упоминаются в теле вызываемой функции только по имени, программист может нечаянно принять ссылочные параметры за параметры, передаваемые по значению. Это может привести к неожиданным эффектам, если исходные копии переменных изменяются вызывающей функцией. [42]
Поскольку ссылочные параметры упоминаются в теле вызываемой функции только по имени, программист может нечаянно принять ссылочные параметры за параметры, передаваемые по значению. Это может привести к неожиданным эффектам, если исходные копии переменных изменяются вызывающей функцией. [43]
Функция, которая не возвращает значения, объявляется с типом возвращаемого значения void. При попытке возвратить значение из этой функции или использовать результат ее вызова в вызывающей функции компилятор генерирует ошибку. [44]
Поскольку доступ к параметрам-ссылкам в теле вызываемой функции производится просто по имени, программист может по неосторожности обращаться с параметрами-ссылками как с параметрами, передаваемыми по значению. Это может привести к неожиданным побочным эффектам, если исходные копии переменных будут изменены вызывающей функцией. [45]