:: Не фоксом единым
Re: js - по ссылке или по значениею
S-type
Автор

Сообщений: 2969
Дата регистрации: 24.04.2004
Igor Korolyov
передаём КОПИЮ значения/переменной, либо же передаём САМО это значение/переменную (так что вызываемый код может изменить её, не просто "использовать").

Впрочем, можно копнуть ещё глубже (до ассемблера/машинных кодов). Переменная с точки зрения ассемблера - это адрес ячейки памяти. Когда выполняется какое то действие с переменной (например, пересылка - mov), указывается её адрес (либо, имя регистра). Так что, выражение "передаём САМу переменную" означает "передаём адрес переменной".

Вот так, ближе к полтиннику, начинаешь постигать программирование



Исправлено 1 раз(а). Последнее : S-type, 30.12.16 14:39
Ratings: 0 negative/0 positive
Re: js - по ссылке или по значениею
of63

Сообщений: 25254
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
> выражение "передаём САМу переменную" означает "передаём адрес переменной".
А когда, при вызове FUNC(0), механизм передачи параметров заносит в стек (или в регистр, или в другой механизм передачи) число 0, то какой адрес он помещает в стек ? На месте 0, механизм мог бы взять значение какой-то переменной, и тоже поместить его в стек. Никакой адрес не нужен. Только если есть специальное желание передать адрес (об этом надо сообщить, при разработке, и функции и вызывающему механизму). Желание возникает, чтобы управлять этим значением снаружи функции...
Ratings: 0 negative/0 positive
Re: js - по ссылке или по значениею
S-type
Автор

Сообщений: 2969
Дата регистрации: 24.04.2004
of63
> выражение "передаём САМу переменную" означает "передаём адрес переменной".
Это относится к передаче "по ссылке"

of63
А когда, при вызове FUNC(0),
А это относится к передаче "по значению".
Ratings: 0 negative/0 positive
Re: js - по ссылке или по значениею
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
S-type
Переменная с точки зрения ассемблера - это адрес ячейки памяти.
Либо регистр процессора - для x86, для каких-то иных архитектур может быть ещё что-то своё.
S-type
Когда выполняется какое то действие с переменной (например, пересылка - mov), указывается её адрес (либо, имя регистра). Так что, выражение "передаём САМу переменную" означает "передаём адрес переменной".
Одно "действие" на языке высокого уровня это может быть целая куча машинных команд, и совсем не обязательно при этом будет использоваться память (и, соответственно, "адреса") - но с точки зрения семантики высокоуровневого языка да, передача "по ссылке" это передача того или иного вида "указателя" на соответствующую "переменную". Т.е. возможность работать непосредственно с "той же самой" переменной что и в вызывающем коде. Могут быть, конечно, ограничения - например модификатор const в си - он не позволит "пересоздать" исходный объект (т.е. выделить новый блок памяти, инициализировать его и поместить "новый адрес" в эту самую переменную), но работа будет вестись именно с самим этим объектом, а не его копией.

Надеюсь, с передачей параметров в Си (где передаются всегда "значения", а для объектов - их копии, и чтобы передать ссылку/указатель нужно явно так и писать) уже всё понятно


------------------
WBR, Igor
Ratings: 0 negative/0 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 6 (Гостей: 6)

© 2000-2024 Fox Club 
Яндекс.Метрика