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