Передача параметров по значению и по ссылке в современных языках программирования отличается тем, как происходит копирование переменных. github.com
Передача по значению: github.com
- При запуске функции в памяти создаётся вторая ячейка того же типа, что и исходная переменная. github.com
- Значение переменной копируется в параметр. github.com
- Внутри функции работа происходит с копией оригинальной переменной. github.com
- После выполнения функции параметр уничтожается, все изменения, которые были внутри неё, не сохраняются. github.com
Передача по ссылке: github.com
- Копии переменной не создаётся, а создаётся альтернативное имя переменной — ссылка. github.com
- Внутри функции работа происходит с той же ячейкой памяти, которую передают как параметр. github.com
- Все изменения, которые производились над параметром, влияют на оригинальную ячейку памяти. github.com
- После завершения функции уничтожается только параметр-ссылка, а сама ячейка памяти остаётся в памяти. github.com Если она была изменена в функции, то эти изменения сохраняются. github.com
Передача по ссылке чаще используется в ситуациях, когда необходимо вернуть из функции изменённое значение параметра или избежать копирования большого объёма данных. github.com
Однако есть языки программирования, которые не поддерживают передачу по ссылке и по значению, например Python. python-school.ru В нём используется передача параметров через присваивание. python-school.ru