Вызов по ссылке против вызова по значению: разница и сравнение

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

Параметры, которые в них используются, называются фактическими параметрами. Они используются во многих языках программирования, таких как C, C++ и Java.

Основные выводы

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

Вызов по ссылке против вызова по значению

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

Вызов по ссылке против вызова по значению

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

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

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

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

Сравнительная таблица

Параметры сравненияЗвонок по ссылкеЗвонок по значению
ТехнологияПеременная передается.Копия переменной передается.
Значение переменнойВнесенные изменения повлияют на функцию снаружи.Внесенные изменения не повлияют на функцию снаружи.
Исходное значениеОн модифицирован.Он не изменен.
БезопасностьРеальные аргументы небезопасны.Настоящие аргументы безопасны.
ОпределениеОн использует саму переменную для передачи.Он использует копию переменной для передачи.

Что такое вызов по ссылке?

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

Читайте также:  Блокчейн против науки о данных: разница и сравнение

Возможны случайные модификации. Важно тщательно обрабатывать операции с аргументами. Это помогает избежать изменений, сделанных по ошибке.

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

В этом методе пожизненная гарантия является большой проблемой. Это станет опасным, если вы работаете с многопоточными программами и лямбда-выражениями. Чтобы объявить вызов по ссылке, вы должны передать адрес.

Звоните по ссылке, когда дело доходит до программирования на C. Он напрямую обращается к элементам данных и выполняет над ними функции. Но вы должны быть осторожны, так как в этом участвуют указатели.

Если вы знаете конкретный статус элемента данных, вызовите метод по ссылке perfect. Изменение копии данных не принесет ничего полезного.

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

Что такое вызов по значению?

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

It explains that no changes are made in the value even though they are changed inside the function. In java, the call by value method means calling the method with its parameter as a value.

В этом методе параметры хранятся в разных местах памяти. Если вы сделаете какие-либо изменения внутри местоположения, фактический параметр вызывающей стороны не будет затронут.

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

Читайте также:  Hotjar против Google Analytics: разница и сравнение

This method preserves the data as it does not change the original variable. Here arguments are variables. Changing a variable in a function body is not direct. Complex expressions can work as arguments sometimes.

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

Основные различия между вызовом по ссылке и вызовом по значению

  1. Исходное значение изменяется при вызове по ссылке. С другой стороны, при вызове по значению исходное значение не изменяется.
  2. Вызов по ссылке поддерживается языками программирования, но не используется по умолчанию. С другой стороны, вызов по значению работает по умолчанию в языках программирования.
  3. В вызове по ссылке любые изменения, внесенные в переменную, также повлияют на переменную вне функции. С другой стороны, при вызове по значению любые изменения, сделанные в переменной, не повлияют на переменную вне функции.
  4. Вызов по ссылке позволяет вносить изменения в значение переменной. С другой стороны, вызов по значению не позволит вам вносить изменения.
  5. При вызове по ссылке будет передан адрес значения. Но при вызове по ссылке будет передана копия значения. 
Рекомендации
  1. https://www.jstor.org/stable/3857812
  2. ftp://prog.vub.ac.be/education/EMOOSE/ReuseSlides/merge-papers/Jackson&al1994-semanticDiff.pdf

Последнее обновление: 22 июля 2023 г.

точка 1
Один запрос?

Я приложил столько усилий, чтобы написать этот пост в блоге, чтобы предоставить вам ценность. Это будет очень полезно для меня, если вы подумаете о том, чтобы поделиться им в социальных сетях или со своими друзьями/родными. ДЕЛИТЬСЯ ♥️

Оставьте комментарий

Хотите сохранить эту статью на потом? Нажмите на сердечко в правом нижнем углу, чтобы сохранить в свой собственный блок статей!