Разлика между обаждане по стойност и обаждане по справка

Ключова разлика - обаждане по стойност спрямо обаждане по справка
 

Много езици за програмиране използват функции. Функцията е набор от оператори за изпълнение на конкретна задача. Основният код може да бъде разделен на няколко функции и да ги извикате. Има два начина за извикване на функция като повикване по стойност и повикване чрез препратка. При повикване по стойност стойност копията на променливи се предават във функцията. Ако има промяна в стойността на функцията, тя не променя първоначалната стойност. При повикване чрез справка промените на променливата във функцията отразяват първоначалната стойност. Най- ключова разлика между call по стойност и call by reference е това, при повикване по стойност, копието на променливите се предава на функцията, а при повикване чрез справка адресите на променливите се предават на функцията.  Тази статия обсъжда разликата между разговор по стойност и обаждане по референция.

СЪДЪРЖАНИЕ

1. Преглед и ключова разлика
2. Какво е Call by Value
3. Какво е Call by Reference
4. Прилики между Call by Value и Call by Reference
5. Паралелно сравнение - обаждане по стойност срещу обаждане по референция в таблична форма
6. Резюме

Какво е Call by Value?

При повикване по стойност копията на променливите се предават на функцията. Функцията може да промени тази копирана стойност, но тя не променя първоначалната стойност. Тази концепция може лесно да бъде разбрана чрез смяна на програма с две числа. Обърнете се по-долу към програмата C, написана в среда на Code Blocks.

Фигура 01: Програма за замяна на две числа

Според програмата, дадена по-долу, променливата 'a' има стойност 20, а променливата 'b' има стойност 30. При извикване на функцията swap (a, b) тези две стойности се предават на функцията swap. При функцията за замяна „a“ се копира в „x“ и „b“ се копира в „y“. Сега, "x" има стойност 20, а "y" има стойност 30. Използвайки променливата temp, двете стойности се заменят. Когато отпечатате стойностите на „x“ и „y“ вътре в тази функция за суап, изходът ще даде 30 за „x“ и 20 за „y“. Когато изпълнението на функцията за замяна приключи, контролът се връща обратно към основната функция. Когато отпечатвате стойностите на 'a' и 'b', в основната функция резултатите ще бъдат първоначалните стойности. Те са 20 за 'a' и 30 за 'b'. Промените, направени с помощта на функцията за замяна, не се отразяват в основната програма.

Фигура 02: Резултат от програмата за смяна

'x' и 'y' във функцията swap имат суапирани стойности, които са 30 и 20, но тези стойности не могат да се използват в основната програма. Въпреки че 'x' и 'y' имат заменени стойности, те са локални променливи за суап функция и не могат да бъдат достъпни от основната функция. За да избегнете този проблем, може да се използва обаждане чрез справка.

Какво е обаждане по справка?

При този метод адресите на променливите се изпращат към функцията. Обърнете се по-долу към програмата C, написана в среда на Code Blocks.

Фигура 03: Размяна на две числа с помощта на указатели

Според дадения пример по-долу, стойността на 'a' е 20, а стойността на 'b' е 30. Вместо да предава копия на 'a' и 'b', програмистът може да изпраща адресите на 'a' и 'b 'използвайки функцията, swap (& a, & b).

Фигура 04: Извеждане на програмата за смяна с помощта на указатели

При суапа функцията трябва да използва указатели, защото адресите са предадени и тези адреси трябва да се държат от указатели. Вътре в функцията адресът на „a“ се копира на „x“, а адресът на „b“ се копира на „y“. Използвайки променливата temp, стойностите 'x' и 'y' се заменят. В този разговор чрез референтния метод промените във функцията за замяна се отразяват в основната програма. При отпечатването на главните стойности на „a“ и „b“ ще се получат разменените стойности. Сега изходът на 'a' е 30 и 'b' е 20. Тъй като функцията приема адреса на променливите, промените, направени вътре във функцията, влияят на първоначалните стойности.

Каква е приликата между Call by Value и Call by Reference?

  • Тези два метода се използват за извикване на функции / методи.

Каква е разликата между обаждане по стойност и обаждане по справка?

Call by Value спрямо Call by Reference

При повикване по стойност копията на променливи се предават във функцията, така че промените, направени вътре във функцията, няма да променят първоначалната стойност. При повикване чрез справка адресът на променливите се предава на функцията, така че промените, направени за променливи вътре във функцията, ще променят първоначалната стойност.
 Модификация на стойността
При повикване по стойност първоначалната стойност не се променя. При повикване чрез справка оригиналните стойности се променят.

резюме - Обаждане по стойност срещу обаждане по справка

Call по стойност и call by reference са методи за извикване на функцията. Разликата между call by value и call by reference е, че при call по стойност копията на променливите се предават на функцията, а в call by reference, адресите на променливите се предават на функцията. Използването на разговор по стойност или обаждане по референция зависи от задачата за изпълнение.

Изтеглете PDF версията на Call by Value vs Call by Reference

Можете да изтеглите PDF версия на тази статия и да я използвате за офлайн цели, съгласно цитираната бележка. Моля, изтеглете PDF версията тук Разлика между стойност по обаждане и обаждане по справка

справка:

1.Jaiswal, Haresh. „11 Обаждане по стойност срещу обаждане по справка.“ YouTube, YouTube, 24 декември 2015 г. Достъпно тук