2013-06-02 2 views
0

Я пытаюсь точно выяснить, какие методы передачи параметров. Что они делают, каковы их различия ... У меня есть следующая подпрограмма:Понимание проблемы передачи параметров в языках программирования

subprogram p(x) 
    a[1] = 6; 
    element = 2; 
    x = x + 3; 
end 

a - массив и имеет только два элемента.

a[1] = 1 
a[2] = 2 
element = 1 

мы называем подпрограмму следующим образом:

p(a[element]) 

Тогда что бы результаты, если подпрограмма использует «передать по значению», «пройти по результату», «пройти по ценностному результату» , «пройти по ссылке» или «пройти по имени».

Я действительно смущен. Заранее спасибо.

+0

Какой язык является он.? – pbibergal

+0

Не имеет значения, на каком языке это. иногда вы используете проход по значению, иногда передаете по ссылке. какие отличия от того, что я спросил – user2870

+0

Пропуск по имени зависит от того, вызывает ли вызов имя по вызову по значению, ссылке или значению-результату. В этом случае при вызове имени дается ссылка, он изменит значение 'a [2]' на 5, но вызов по значению только дает 'a [2]' функции, но не изменяет 'a [2 ] 'себя. –

ответ

0

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

Pass By Value: изменять только явно названные переменные.

a[1] = 6 
a[2] = 2 
element = 2 

Pass По ссылке:. Изменить явно именованные переменные и прочее, переданные в

a[1] = 9 
a[2] = 2 
element = 2 

Pass By Результат:. Изменить явно именованные переменные и прочее, переданные в

a[1] = 9 
a[2] = 2 
element = 2 

Pass By Value -Результат: изменить явно названные переменные и переданные материалы.

a[1] = 9 
a[2] = 2 
element = 2 

Pass By Name: изменяются явно именованные переменные и прочее прошли в

a[1] = 6 
a[2] = 5 
element = 2 
+0

«Предположим, что это динамические, лексические правила». Что это за черт? Динамическая область обзора противоположна лексическому охвату. – newacct

+0

Вы правы - я начал предложение и передумал в середине пути. Я изменю его. –

+0

Ваш ответ неправильный. – user2870

Смежные вопросы