Конспект лекций по информатике и информационным технологиям

142 функция возвращает значение, то его тип указывается в описании функции непосредст­ венно пред ее именем, а возвращаемое значение указывается после оператора return. Та­ кие функции могут вызываться внутри операторов (например, в операторе присвоения "=") или как аргументы других функций. Если функция не возвращает значения, то в ка­ честве возвращаемого типа указывается void. Вызывается такая функция как обычный оператор. Вызов функции может включаться в выражения в качестве операнда. Когда выра­ жение вычисляется, функция выполняется и значением операнда становится значение, возвращаемое функцией. Пример программы, осуществляющей вызов функции тах(): void main(void) { double a, b, c; printf("Введите значения a и b: "); scanf("%lg %lg", &a/&b) r z = 1 + 5*max(a,b); printfC'c = %g", c) ; } 12.2.3. Параметры функции Параметры используются для передачи входных данных из вызывающей програм­ мы в функцию и выходных данных из функции в вызывающую программу. Чтобы отличать параметры подпрограммы, описанные в её заголовке и теле, от па­ раметров, указываемых при вызове подпрограммы, первые принято называть формальны­ ми параметрами, вторые - фактическими параметрами. При вызове функции фактические параметры, указанные в команде вызова, становятся значениями соответствующих фор­ мальных параметров, чем и обеспечивается передача данных в функцию. В описании функции задается список формальных параметров. Каждый параметр, указанный в списке формальных параметров, является локальным по отношению к данной функции и в программном блоке функции на него можно ссылаться по его идентификато­ ру (имени). Существует два способа передачи параметров внутрь функции: по значению и по ссылке. При передаче параметра по значению формальному параметру функции присваи­ вается копия значения фактического параметра. При этом все изменения формального па­ раметра внутри функции никак не отражаются на фактическом параметре. При передаче параметра по ссылке в качестве формального параметра передается адрес фактического параметра. Внутри функции этот адрес открывает доступ к фактиче­ скому параметру. Это значит, что все изменения формального параметра будут отражать­ ся на значении фактического параметра. 12.2.4. Передача параметров по значению Формальный параметр-значение обрабатывается, как локальная по отношению к процедуре или функции переменная, за исключением того, что он получает свое началь­ ное значение из соответствующего фактического параметра при активизации функции. Изменения, которые претерпевает формальный параметр-значение, не влияют на значение фактического параметра. Фактический параметр должен иметь тип, совместимый по присваиванию с типом формального параметра-значения. По умолчанию в С++ используется передача по значению. В этом случае операто­ ры, образующие тело функции, не могут изменять фактические параметры, указанные при ее вызове. Пример:

RkJQdWJsaXNoZXIy MTY0OTYy