Выклік функцыі па значэнні з'яўляецца спосабам па змаўчанні выкліку функцыі ў праграмаванні C. Перш чым мы абмяркуем выклік функцыі па значэнні, дазваляе зразумець тэрміналогіі, што мы будзем выкарыстоўваць пры тлумачэнні гэтага:
Фактычныя параметры: Параметры , якія з'яўляюцца пры выкліку функцыі.
Фармальныя параметры: Параметры , якія з'яўляюцца ў абвестках функцый.
Напрыклад:
#include <stdio.h> INT сума (Int А, Int б) { INT з = а + Ь; вярнуцца с; } ИНТ асноўны ( { INT var1 = 10; INT var2 = 20; INT var3 = сума (var1, var2); Е ( "% d", var3); вяртаць 0; }
У прыведзеным вышэй прыкладзе пераменная а і Ь фармальныя параметры (або фармальныя аргументы). Пераменная var1 і var2 з'яўляюцца фактычныя аргументы (або фактычныя параметры). Фактычныя параметры таксама могуць быць значэння. Як і сума (10, 20), тут 10 і 20 ўяўляюць сабой фактычныя параметры.
У гэтым кіраўніцтве мы абмяркуем выклік функцыі па значэнні. Калі вы хочаце прачытаць выклік стандартнага метаду , то звярніцеся гэтым кіраўніцтвам: выклік функцыі па спасылцы .
Давайце вернемся да справы.
Што такое функцыя выкліку па значэнні?
Калі мы перадаем фактычныя параметры пры выкліку функцыі, то гэта вядома як выклік функцыі па значэнні. У гэтым выпадку значэння фактычных параметраў капіююцца фармальных параметраў. Такім чынам, аперацыі, што выконваюцца па фармальным параметрах, не адлюстроўваюць ў фактычных параметрах.
Прыклад функцыянальнага выкліку па значэнні
Як ужо згадвалася вышэй, ў выкліку па значэнні фактычныя аргументы капіююцца ў фармальных аргументаў, такім чынам, любая аперацыя, выкананая з дапамогай функцыі на аргументы не ўплывае на фактычныя параметры. Давайце разгледзім прыклад, каб зразумець гэта:
#include <stdio.h> ИНТ прырашчэнне (ідэалам вар) { пераменная = пераменная + 1; вярнуцца вар; } Int асноўных () {INT num1 = 20;INT пит2 = прырашчэнне (num1);Е ( "Значэнне num1 з'яўляецца:% d", num1);Е ( "Значэнне \ nnum2 з'яўляецца:% d", пит2);вяртаць 0; }
выхад:
Значэнне num1 складае: 20 Значэнне пит2 складае: 21
тлумачэнне
Мы прайшлі зменную num1 пры выкліку метаду, але так як мы выклікаем функцыю з дапамогай выкліку метаду па кошту, толькі значэнне num1 капіюецца ў фармальны параметр вар. Такім чынам, змены, унесеныя ў вар не адлюстроўвае ў num1.
Прыклад 2: Перастаноўка колькасці, выкарыстоўваючы выклік функцыі па значэнні
#include <stdio.h> несапраўдным swapnum (ідэалам var1, var2 INT) {INT tempnum;/ * Капіяванне значэнне var1 ў часовую зменную * /tempnum = var1;/ * Капіяванне значэнне var2 ў var1 * /var1 = var2;/ * Капіяванне часовае пераменнае значэнне ў var2 * /var2 = tempnum; } Int асноўных () { INT num1 = 35, пит2 = 45; Е ( "да замены:% D,% D", num1, num2); / * Выкліку функцыі падпампоўкі * / swapnum (num1, пит2); Е ( "\ Nafter замены:% d,% d", num1, пит2); }
выхад:
Да замены: 35, 45 Пасля замены: 35, 45
Чаму зменныя застаюцца нязменнымі нават пасля абмену?
Прычына ў тым жа - функцыя выклікаецца значэннем для num1 num2. Так на самой справе var1 і var2 становіцца месцамі (не num1 num2). Як і ў выкліку па значэнні фактычных параметры проста капіююцца ў фармальныя параметры.
з у выпадку залежны мова
Першы раз у маім жыцці, я атрымаў гэтую канцэпцыю. Дзякуй так шмат для тлумачэння яго з такімі чэпкімі прыкладамі.