Возвращаемые значения функции. Способы возвращения значения — КиберПедия 

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

Биохимия спиртового брожения: Основу технологии получения пива составляет спиртовое брожение, - при котором сахар превращается...

Возвращаемые значения функции. Способы возвращения значения

2020-12-06 107
Возвращаемые значения функции. Способы возвращения значения 0.00 из 5.00 0 оценок
Заказать работу

Возвращаемое значение функции — это значение, возвращаемое в точку вызова функции, после её выполнения.

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

Для возврата значения применяется ключевое слово return, за которым следует подлежащее возвращению значение.

При выполнении return происходит мгновенный выход из функции.

 

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

Чтобы предотвратить случайные изменения объекта с помощью возвращенной ссылки или указателя, возвращаемое значение нужно описывать как ссылку или указатель на константу:

const int &a(int i);

 

Способы передачи параметров функции. Передача по значению

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

void Function(char Ch);

При вызове функция может иметь вид:

Function (Ch2)

В памяти создаётся временная переменная Сh, в нее копируется значение аргумента Ch2. На этом связь между Ch и Ch2 разрывается. Можно изменять значение Ch внутри функции, но это никак не отразится на значении внешней переменной Ch2, указанной в вызове функции в качестве аргумента.

 

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

 

Способы передачи параметров. Передача по ссылке

Для реализации передачи по ссылке передименем параметра в заголовке функции должен быть написан ‘&’.

void Function(char &Ch);

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

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

Параметры ссылки

<Тип ссылки>&<имя ссылки>;

Тип ссылки определяется спецификацией типа, за которой следует операция &

Примеры

1. int A = 5;

2. int& rA = A;

3. extern int& rB;

4. int& foo ();

5. void bar (int& rP);

 

65. Способы передачи параметров

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

Способы передачи:

·   по значению [в стек заносятся копии значений аргументов; функция работает с копиями]

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

·   по адресу (ссылке) [в стек заносятся копии адресов аргументов и функция осуществляет доступ к ячейкам памяти по этим адресам. Могут изменяться исходные значения аргументов]

* При передаче параметров по ссылке каждый формальный параметр, который необходимо изменить, описывают с типом ссылка. Поскольку ссылка - это другое имя объекта и все действия, которые производятся над ссылкой, являются действиями над самим объектом, то при передаче параметра-ссылки внутри функции мы имеем дело с самим объектом, а не с его локальной копией. Это означает, что действия, произведенные в функции над формальными параметрами проводят к изменению фактических.

 


Поделиться с друзьями:

Археология об основании Рима: Новые раскопки проясняют и такой острый дискуссионный вопрос, как дата самого возникновения Рима...

Биохимия спиртового брожения: Основу технологии получения пива составляет спиртовое брожение, - при котором сахар превращается...

Типы оградительных сооружений в морском порту: По расположению оградительных сооружений в плане различают волноломы, обе оконечности...

Историки об Елизавете Петровне: Елизавета попала между двумя встречными культурными течениями, воспитывалась среди новых европейских веяний и преданий...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.01 с.