Многи програмски језици користе функције. Функција је скуп изјава за извођење одређеног задатка. Главни код се може поделити на неколико функција и позвати их. Постоје два начина позивања функције као што су позив по вредности и позив референцом. Код позива методом вредности, копије променљивих се преносе у функцију. Ако дође до промене вредности функције, она не мења оригиналну вредност. У позиву по референци, промене променљиве унутар функције одражавају оригиналну вредност. Тхе кључна разлика између позива према вредности и позива по референци је то, у позиву по вредности, копија променљивих се преноси у функцију, а у позиву на референцу, адресе променљивих се преносе у функцију. Овај чланак говори о разлици између вредности позива и позива према референци.
1. Преглед и кључне разлике
2. Шта је позив по вредности
3. Шта је позив по референци
4. Сличности између позива према вредности и позива по референци
5. Упоредни поредак - Позив према вредности у односу на позив према референци у табеларном облику
6. Резиме
Код вредности по вредности, копије променљивих се преносе у функцију. Функција може променити копирану вредност, али не и оригиналну вредност. Овај концепт се лако може разумети заменом програма са два броја. Погледајте ниже Ц програм написан у окружењу Цоде Блоцкс.
Слика 01: Програм за замјену два броја
Према програму датом у наставку, променљива 'а' има вредност 20, а променљива 'б' вредност 30. Када зовете свап (а, б) функцију, ове две вредности преносе се у функцију свап. У функцији свап, 'а' се копира у 'к', а 'б' се копира у 'и'. Сада 'к' има вредност 20, а 'и' вредност 30. Користећи променљиву темп две вредности се мењају. Када штампамо вредности „к“ и „и“ унутар те функције „свап“, излаз ће дати 30 за „к“ и 20 за „и“. Када је извршавање функције свап завршено, контрола се враћа назад у главну функцију. Када се штампају вредности 'а' и 'б', у главној функцији, резултати ће бити оригиналне вредности. Они су 20 за 'а' и 30 за 'б'. Промјене извршене помоћу свап функције не одражавају се у главном програму.
Слика 02: Резултати програма замене
'к' и 'и' у функцији свап имају замијењене вриједности које су 30 и 20, али те вриједности се не могу користити у главном програму. Иако су „к“ и „и“ измењене вредности, оне су локалне променљиве за функцију „свап“ и не може им се приступити главна функција. Да би се избегао овај проблем, може се користити позив по референци.
У овом методу адресе променљивих се шаљу функцији. Погледајте ниже Ц програм написан у окружењу Цоде Блоцкс.
Слика 03: Замјена два броја помоћу показивача
Према датом доњем примеру, вредност „а“ је 20, а вредност „б“ је 30. Уместо да предаје копије „а“ и „б“, програмер може послати адресе „а“ и „б“ 'користећи функцију, свап (& а, & б).
Слика 04: Резултати програма измјене помоћу показивача
У свап функцији треба користити показиваче јер се адресе просљеђују и те адресе требају држати показивачи. Унутар функције се адреса 'а' копира на 'к', а адреса 'б' копира на 'и'. Коришћењем променљиве темп, вредности 'к' и 'и' се мењају. У овом позиву референтном методом, промене унутар функције свап одражавају се у главном програму. Штампање вредности 'а' и 'б' у главном даће измењене вредности. Сада је излаз 'а' 30, а 'б' 20. Док функција преузима адресу променљивих, промене унете у функцију утичу на изворне вредности.
Цалл Би Валуе вс Цалл Би Референце | |
Код позива по вредности, копије променљивих се преносе у функцију, тако да промене извршене унутар функције неће променити оригиналну вредност. | У позиву по позиву, адреса променљивих се прослеђује функцији, тако да ће промене које се извршавају за променљиве унутар функције модификовати оригиналну вредност. |
Измене вредности | |
Код позива по вредности, оригинална вредност се не мења. | У позиву по референци, оригиналне вредности се мењају. |
Позиви по вредности и позиви референцом су начини позивања функције. Разлика између позива према вредности и позива према референци је у томе што се у позиву по вредности копије променљивих преносе у функцију, а у позиву по референци, адресе променљивих се преносе у функцију. Употреба позива по вредности или позивања по референци зависи од задатка који треба обавити.
Можете преузети ПДФ верзију овог чланка и користити је за оффлине употребу према напомени. Молимо преузмите ПДФ верзију овде. Разлика између позива према вредности и позива по референци
1.Јаисвал, Харесх. „11 позив по вредности у односу на референтни позив.“ ЈуТјуб, ИоуТубе, 24. децембар 2015. Доступно овде