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



Передача параметра по ссылке

Автор Александр Мишенин задал вопрос в разделе Другие языки и технологии

В чем отличии передачи парметров по ссылке от передачи параметров по значению? и получил лучший ответ

Ответ от Антон Комаров[гуру]
Передача параметра по значению
Передача параметра по значению означает что вызывающая функция копирует в память, доступную вызываемой, (обычно стек) непосредственное значение. Изменение копии переменной, соответственно, оригинал не затрагивает.
Передача параметра по ссылке
Передача параметра по ссылке означает что копируется не само значение, а адрес исходной переменной (как в случае передачи параметра по адресу) , однако синтаксис используется такой, чтобы программисту не приходилось использовать операцию разыменования и он мог иметь дело непосредственно со значением, хранящимся по этому адресу (как в случае передачи параметра по значению) .
Передача по ссылке позволяет избежать копирования всей информации, описывающей состояние объекта (а это может быть существенно больше чем sizeof(int)) и является необходимой для конструктора копирования.
Если функция возвращает значение по ссылке (например, в виде «return *this;»), то её вызов можно использовать слева от оператора присваивания (смотри также L-выражение) .
В случае если передача по ссылке используется именно как средство увеличения быстродействия, но изменение параметра нежелательно, можно использовать передачу по ссылке константного объекта.
Таким образом можно ожидать, что примерная программа напечатает (если закоментировать ошибочную строку) «0010 022 233 333».
Некоторые языки (или их диалекты) не поддерживают передачу по ссылке, некоторые наоборот - передают параметры исключительно по ссылке, что порождает риск непреднамеренного изменения контекста вызывающей функции.
Источник: вики

Ответ от 123 456[гуру]
если передать переменную по ссылке и изменить, то в вызывающем методе она тоже останется измененной.
если по значению - останется неизменной

Ответ от Nnn7[гуру]
Если в двух словах, то передача параметра по значению передает лишь информацию о значении функции. Внутри функции используется это значение для операций и все, там же умирает.
Передача по ссылке (адресу) запускает схожий процесс, за тем исключением что передаваемый параметр изменяется так же и вне функции. Т. е. если его изменит функция внутри себя, то он изменится и вне функции, т. к. используется адрес этого параметра.

Ответ от Владимир Михалев[гуру]
Ниже ответил из книжки, поэтому скажу проше в первом ты передаешь где значение находится в памяти, а во втором само значение.

Ответ от 3 ответа[гуру]
Привет! Вот подборка тем с ответами на Ваш вопрос: В чем отличии передачи парметров по ссылке от передачи параметров по значению?

[JAVA] как передать (и принять) методу в качестве параметра объект на другой класс
Ни как. Это один из основополагающих принципов безопасности Java.К объектам можно обратиться только
подробнее...
спросили в C Sharp
В чем отличие С++ от С, С#, и С#.Net и какое отношение к ним имеет Sharp
С это подмножество С++. То есть изучив С++ вы должны без проблем понимать С.

Грубо
подробнее...

паскаль процедуры и функции
var означает передачу переменной по ссылке, без var - по значению. Например:
procedure
подробнее...

records и ByVal в VB
ByVal это передача параметра по значению, а ByRef по ссылке.
ByVal приводит к тому, что для
подробнее...

С++.Проблема
Этот код вообще не должен работать в таком виде. Но если это просто куски кода, то не совсем
подробнее...
Ответ от 3 ответа[гуру]
Привет! Вот еще темы с похожими вопросами:

передача ссылок на объекты в Java методах (см. внутри)
1. Строка (java.lang.String) является неизменяемым объектом. Значение строки всегда первоначальное.
подробнее...
спросили в Интернет
Что такое 0 ссылка вконтатке? Вот ссылка: vk.com/id0?1425276312 Тут написано: id0? Что это означает?
А ты кликать не пробывал??? ТОГДА НЕ КЛИКАЙ!! ЭТО УЖАСНАЯ ССЫЛКА!! ОНА ПРИВЕДЁТ ТЕБЯ В ТВОЙ ПРОФИЛЬ
подробнее...

что означает команда в VBA Byval cancel as MSForms.Returnboolean? Желательно с источником. Благодарю
ByVal - спецификатор, указывающий что передача фактического параметра будет осуществляться по
подробнее...
спросили в Интернет GPRS
как самому настроить на мобильный Мегафон GPRS интернет (чтобы ася работала)
Мегафон GPRS. Настройка

Если Вы подключены к Мегафону, то услуга GPRS у Вас уже включена
подробнее...
спросили в Железо
Как удалить с компа резервные копии?
Легко -

WinXP Manager - программа для настройки и оптимизации операционной системы. С ее
подробнее...

покупаем подержанный авто, нужна помощь. подскажите процесс покупки подержанного авто. В какой момент передавать деньги.
Чушь полная про контору с лицензией, читайте гражданский кодекс, это простая сделка купли продажи и
подробнее...
спросили в AT T ZX Spectrum
ассемблер под линукс и под виндовс различаются и чем?
Ассемблер в бóльшей степени зависит от процессора. Но это если писать программу, работающую
подробнее...

Что такое Сниффер и где его взять?
Сниффер позволяет узнать такие параметры как IP-адрес, полный URL странички, с которой он был
подробнее...
спросили в Телефон Память
Что такое кэш-память? Что такое кэш-память в телефоне?
Ваш вопрос:
Как освободить кэш-память в мобильном телефоне?
Ответ мастера:
Если у
подробнее...

Что такое геоинформатика??!!
Геоинформатика (GIS science, geographic information science, geoinformatics)— наука, технология и
подробнее...
Параметр программирование на Википедии
Посмотрите статью на википедии про Параметр программирование
Певчий дрозд на Википедии
Посмотрите статью на википедии про Певчий дрозд
 

Ответить на вопрос:

Имя*

E-mail:*

Текст ответа:*
Проверочный код(введите 22):*