Какие существуют способы передачи данных между подпрограммой и вызывающей ее про

Какие существуют способы передачи данных между подпрограммой и вызывающей ее программой
Гость
Ответ(ы) на вопрос:
Гость
Сейчас буду немного писать беллетристику. Терминологически не точно, но смысл постараюсь объяснить. 1. Использовать глобальные переменные. То есть переменные из общего пространства имён для программы и подпрограммы. В таком случае программа и подпрограмма пользуются одними и теми же переменными, что хотят, то и записывают или читают. Свободно и без ограничений. 2. Передать данные из программы в подпрограмму можно в виде параметров. Этот способ подразделяется на два: передача по значению, и передача по ссылке. 2а) когда параметры передаются из программы в подпрограмму по значению, то подпрограмма создаёт внутри себя копии параметров, и использует их как свои локальные переменные. После завершения работы подпрограммы, такие копии уничтожаются, а исходные значения в вызывающей программе остаются как были, в неизменном виде. Поэтому такая передача данных - как билет в один конец: данные уходят в подпрограмму, а обратно таким способом не возвращаются. 2б) когда параметры передаются из программы в подпрограмму по ссылке, то вызывающая программа передаёт в подпрограмму указатели на соответствующие переменные. Они на самом деле "под капотом" тоже глобальные, как в способе 1, но только их имена не используют общее пространство имён - как бы замаскированы. В таком случае, всё что подпрограмма делает с параметрами, приводит к изменению данных в вызывающей программе. Очень похоже на способ 1. 2а) и 2б) - принципиально разные способы. 2в) ещё бывает способ передачи параметров по имени, но такой способ в массовых языках программирования используется редко. В таком случае в подпрограмму передаётся именованый список параметров, то есть список из пар: имя параметра + значение параметра. Подпрограмма должна уметь такой список принять и обработать. В таком случае можно передавать списки параметров переменной длины, и произвольного состава. 3. В любом случае подпрограмма, если она оформлена в виде функции, может передать обратно в программу возвращаемое значение - результат вычисления, выполненного подпрограммой. У каждого способа есть свои преимущества и недостатки, поэтому в разных случаях используются разные.
Не нашли ответ?
Ответить на вопрос
Похожие вопросы