Функционалдық шақыруды сілтеме арқылы талқыламас бұрын, оны түсіндіріп жатқанда қолданатын терминологияны түсінуге мүмкіндік береді:
Нақты параметрлері : функция қоңырауларында пайда болатын параметрлер.
Формальды параметрлер : Функция туралы декларацияда пайда болатын параметрлер.
Мысалы: Бізде келесідей функционалдық мәлімдеме бар:
int sum (int a, int b);
A және b параметрлері ресми параметрлер болып табылады.
Мынадай функцияны шақырамыз:
int s = sum (10, 20); // Мұнда 10 және 20 нақты параметрлері болып табылады немесе int s = sum (n1, n2); // Мұнда n1 және n2 - нақты параметрлер
Бұл нұсқаулықта функционалдық шақыруды сілтеме әдісі арқылы талқылаймыз. Егер сіз қоңырауды құнды әдіс бойынша оқып шықсаңыз, онда осы нұсқаулыққа сілтеме жасаңыз: функцияны шақыру құны .
Нүктеге қайта оралуға мүмкіндік береді.
Функцияны шақыру сілтемесі дегеніміз не?
Функцияны нақты параметрлердің мекен-жайларын беру арқылы шақырғанда, функцияны шақырудың бұл жолы сілтеме арқылы қоңырау деп аталады. Сәйкестендірілген сілтеме бойынша ресми параметрлер бойынша орындалатын операция нақты параметрлердің мәніне әсер етеді, себебі барлық операциялар нақты параметрлер мекенжайында сақталған мәнде жүзеге асырылады. Алдымен шатастыруға болады, бірақ келесі мысал сіздің күмәніңізді жояды.
Анықтамалық функцияның мысалы
Қарапайым мысал келтірейік. Келесі бағдарламада пікірлерді оқыңыз.
#include <stdio.h> void increment (int * var) { / * Біз айнымалы бойынша қадамды орындадық * var, алайда var - мекен-жайы бар көрсеткіш * Айнымалы num, яғни өсім шынымен орындалатындығын білдіреді * нөмірдің мәні сақталатын мекен-жайда. * / * var = * var + 1; } int main () { int num = 20; / * Функцияны шақырудың бұл жолы шақыру деп аталады * анықтама. Айнымалы нөмірді берудің орнына, біз * айнымалы мекен-жайдың мекен-жайын жіберу * / printf («num мәні:% d», num);0 қайтару; }
Шығару:
Нүктенің мәні: 21
2-мысал: Функция шақыру бойынша сілтеме - Сандарды ауыстыру
Мұнда сілтемелер арқылы қоңырауларды пайдаланып сандарды ауыстырамыз. Айнымалылардың мәндері swapnum () функциясын шақырғаннан кейін өзгертілді, өйткені своптар num1 және num2 айнымалыларының мекенжайларында орын алды.
#include void swapnum (int * var1, int * var2) {int tempnum;tempnum = * var1;* var1 = * var2;* var2 = tempnum; } int main () {int num1 = 35, num2 = 45;printf («Ауыстырудан бұрын:»);printf («\ nnum1 мәні% d», num1);printf («\ nnum2 мәні% d», num2);/ * своп функциясын шақыру * /swapnum ( num1, num2);printf («\ nПайдаланғаннан кейін:»);printf («\ nnum1 мәні% d», num1);printf («\ nnum2 мәні% d», num2);0 қайтару; }
Шығару:
Ауыстырудан бұрын: num1 мәні - 35 num2 мәні - 45 Алмасқаннан кейін: num1 мәні - 45 num2 мәні - 35
Пікір қалдыру Жауапты