Передача по значению или передача по ссылке

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

Callee — это функция, вызываемая другим, а вызывающий — это функция, которая вызывает другую функцию (вызываемого).

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

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

Передача по значению

Передача по значению означает, что копия фактического значения параметра создается в памяти, т.е. вызывающий и вызываемый абоненты имеют e две независимые переменные с одинаковым значением. Если вызываемый объект изменяет значение параметра, эффект не виден вызывающему.

Обзор:

  1. Передает аргумент по значению.
  2. У вызываемого абонента нет доступа к базовому элементу в вызывающем коде.
  3. Копия данных отправляется вызываемому.
  4. Изменения, внесенные в переданную переменную, не влияют на фактическое значение.

Передавать по ссылке

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

Обзор:

  1. Передает аргумент по ссылке.
  2. Callee дает прямую ссылку на программный элемент в вызывающем коде.
  3. Передается адрес памяти для сохраненных данных.
  4. Изменения к значению влияют на исходные данные.

Следующий код иллюстрирует концепцию.

  • pass_by_value
  • pass_by_value
  • pass_by_value
  • pass_by_reference
  • pass_by_reference
 void incrementCount (int count)//передача по значению {count = count + 1;//увеличивает значение count внутри функции} int main  () {int count = 0;//инициализируем переменную count int result = 0;//инициализируем va  riable result incrementCount (count);//вызов функции инкремента cout  
путь>

В этом примере мы ясно видим, что значение переменной «count» не обновляется, если оно передается по значению. Однако он обновляется, когда переменная count передается по ссылке.

Когда использовать передачу по значению?

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

Когда использовать передачу по ссылке?

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

Оцените статью
nanomode.ru
Добавить комментарий