functions c with types examples
Типови функција на језику Ц ++ заједно са њиховом употребом.
У нашим ранијим водичима до сада, видели смо разне концепте у Ц ++-у попут променљивих, класа складишта, оператора, низова, низова итд.
У овом упутству ћемо кренути напред и разговарати о концепту функција. Функције се називају и методе, потпрограми или процедуре.
=> Овде прочитајте опширну серију водича за обуку за Ц ++.
која од следећих операција није могла да се примени на показиваче
Шта ћете научити:
- Како дефинишемо функцију?
- Врсте функција у Ц ++
- Изјава о функцији
- Дефиниција функције
- Позивање функције
- Формални и стварни параметри
- Повратне вредности
- Воид Фунцтионс
- Прослеђивање параметара функцијама
- Задани параметри
- Параметри Цонст
- Инлине функције
- Коришћење структура у функцијама
- Закључак
- Препоручено читање
Како дефинишемо функцију?
Функција је скуп исказа који се састављају за обављање одређеног задатка. То могу бити изјаве које извршавају неке поновљене задатке или изјаве које извршавају неке специјалне задатке попут штампања итд.
Једна од употреба функција је поједностављивање кода растављањем на мање јединице које се називају функције. Још једна идеја која стоји иза коришћења функција је да нас спашава од поновног писања истог кода. Морамо само написати једну функцију, а затим је позвати по потреби и без потребе да поново и изнова пишемо исти скуп изјава.
Врсте функција у Ц ++
У Ц ++-у имамо две врсте функција као што је приказано у наставку.
Уграђене функције
Уграђене функције називају се и библиотечким функцијама. То су функције које пружа Ц ++ и не морамо их сами писати. Ове функције можемо директно користити у нашем коду.
Ове функције су смештене у заглавне датотеке на Ц ++. На пример ,, су заглавља која имају уграђене математичке функције, односно функције стрингова.
Погледајмо Пример употребе уграђених функција у програму.
#include #include using namespace std; int main() { string name; cout << 'Enter the input string:'; getline (std::cin, name); cout << 'String entered: ' << name << '!
'; int size = name.size(); cout<<'Size of string : '< Излаз:
Унесите улазни низ: Помоћ за тестирање софтвера
Унесен низ: Помоћ за тестирање софтвера!
Величина жице: 21
Овде користимо заглавља и. Типови података и друге улазно / излазне функције дефинисани су у библиотеци. Функције низа које се користе као гетлине, величина су део заглавља.
Кориснички дефинисане функције
Ц ++ такође омогућава својим корисницима да дефинишу сопствене функције. То су функције које дефинише корисник. Функције можемо дефинисати било где у програму, а затим их позвати из било ког дела кода. Баш као и променљиве, и њу треба декларисати пре употребе, функције такође треба декларисати пре него што се позове.
Размотримо детаљно кориснички дефинисане функције.
Општа синтакса за кориснички дефинисане функције (или једноставно функције) дата је у наставку:
return_type functionName(param1,param2,….param3) { Function body; }
Дакле, као што је приказано горе, свака функција има:
- Тип повратка: То је вредност коју функције враћају позивајућој функцији након извршавања одређеног задатка.
- фунцтионНаме : Идентификатор који се користи за именовање функције.
- Листа параметара: Означено парам1, парам2, ... парамн у горњој синтакси. То су аргументи који се прослеђују функцији када се изврши позив функције. Листа параметара није обавезна, тј. Можемо имати функције које немају параметре.
- Тело функције: Група изјава које извршавају одређени задатак.
Као што је већ поменуто, потребно је да ‘прогласимо’ функцију пре него што је употребимо.
Изјава о функцији
Декларација функције говори компајлеру о повратном типу функције, броју параметара које функција користи и њеним типовима података. Укључујући имена параметара у функцији, декларација није обавезна. Декларација функције се такође назива и прототип функције.
Дали смо неколико примера декларације функције за вашу референцу.
int sum(int, int);
Горња декларација је функције „збир“ која узима две целобројне вредности као параметре и враћа целобројну вредност.
void swap(int, int);
То значи да свап функција узима два параметра типа инт и не враћа никакву вриједност, па је стога тип повратног стања воид.
void display();
Приказ функције не узима никакве параметре и такође не враћа ниједан тип.
Дефиниција функције
Дефиниција функције садржи све што садржи декларација функције, а осим тога садржи и тело функције затворене у заградама ({}).
Поред тога, требало би да има и именоване параметре. Када се функција позове, контрола програма прелази на дефиницију функције тако да се може извршити функцијски код. Када је извршавање функције завршено, контрола се враћа на тачку где је функција позвана.
За горњу декларацију свап функције, дефиниција је дата у наставку:
void swap(int a, int b){ b = a + b; a = b - a; b = b - a; }
Имајте на уму да декларација и дефиниција функције могу да иду заједно. Ако дефинишемо функцију пре него што је референцирамо, тада није потребна посебна декларација.
Узмимо комплетан пример програмирања за демонстрацију функције.
#include using namespace std; void swap(int a, int b) { //here a and b are formal parameters b = a + b; a = b - a; b = b - a; cout<<'
After swapping: '; cout<<'a = '< Позивање функције Када имамо функцију у нашем програму, тада у зависности од захтева морамо позвати или позвати ову функцију. Тек када се функција позове или позове, функција ће извршити свој скуп израза како би пружила жељене резултате.
Функција се може позвати са било ког места у програму. Може се позвати из главне функције или из било које друге функције ако програм користи више функција. Функција која позива другу функцију назива се „функција позивања“.
У горњем примеру замјене бројева, функција свап се позива у главној функцији. Отуда главна функција постаје позивна функција.
Формални и стварни параметри
Већ смо видели да можемо имати параметре за функције. Параметри функције су дати у дефиницији функције као листа параметара која следи име функције. Када се функција позове, морамо прослиједити стварне вриједности ових параметара, тако да помоћу тих стварних вриједности функција може извршити свој задатак.
Позвани су параметри који су дефинисани у дефиницији функције Формални параметри . Позову се параметри у позиву функције који су стварне вредности Стварни параметри.
У горњем примеру замјене бројева написали смо коментаре за формалне и стварне параметре. У позивајућој функцији, тј. Главној, вредност два цела броја се чита и прослеђује свап функцији. То су стварни параметри.
Дефиниције ових параметара можемо видети у првом реду дефиниције функције. То су формални параметри.
Имајте на уму да врста формалних и стварних аргумената треба да се подудара. Редослед формалних и стварних параметара такође треба да се подудара.
Повратне вредности
Једном када функција изврши свој задати задатак, требало би да врати резултат позивајућој функцији. За ово нам треба повратни тип функције. Функција може вратити једну вредност позивајућој функцији. Тип повратка функције се декларише заједно са прототипом функције.
Узмимо пример додавања два броја за демонстрацију типова поврата.
#include using namespace std; int sum(int a, int b){ return (a+b); } int main() { int a, b, result; cout<>a>>b; result = sum(a,b); cout<<'
Sum of the two numbers : '< Излаз:
Унесите два броја која треба додати: 11 11
Збир два броја: 22
У горњем примеру имамо збир функција који узима два целобројна параметра и враћа цео тип. У главној функцији са улаза конзоле читамо две целобројне вредности и прослеђујемо их функцији збира. Како је тип повратка цео број, на ЛХС имамо променљиву резултата, а РХС је позив функције.
Када се функција изврши, израз (а + б) који враћа сума функције додељује се резултатској променљивој. То показује како се користи повратна вредност функције.
Воид Фунцтионс
Видели смо да општа синтакса функције захтева да се дефинише тип повратка. Али ако у случају да имамо такву функцију која не враћа никакву вредност, у том случају, шта одредимо као тип повратка? Одговор је да користимо бескорисни тип „воид“ да бисмо указали да функција не враћа вредност.
У таквом случају функција се назива „воид фунцтион“ и њен прототип ће бити попут
воид фунцтионНаме (парам1, парам2, ... .парам 3);
Белешка : Сматра се добром праксом укључивање изјаве „повратак;“ на крају функције празнине ради јасности.
Прослеђивање параметара функцијама
Већ смо видели концепт стварних и формалних параметара. Такође знамо да стварни параметри преносе вредности функцији коју примају параметри формата. То се назива прослеђивање параметара.
У Ц ++-у имамо одређене начине за прослеђивање параметара као што је објашњено у наставку.
Прођите поред вредности
У програму за замену два цела броја о којем смо раније разговарали, видели смо да смо углавном прочитали целе бројеве „а“ и „б“ и проследили их функцији размене. Ово је техника преноса вредности.
У техници прослеђивања вредности прослеђивања параметара, копије вредности стварних параметара прослеђују се формалним параметрима. Због тога се стварни и формални параметри чувају на различитим меморијским локацијама. Дакле, промене направљене у формалним параметрима унутар функције не одражавају се изван функције.
То можемо боље разумети ако још једном посетимо замену два броја.
#include using namespace std; void swap(int a, int b) { //here a and b are formal parameters b = a + b; a = b - a; b = b - a; cout<<'
After swapping inside Swap:
'; cout<<'a = '< Прођите поред референце Прослеђивање референце је још једна техника коју Ц ++ користи за прослеђивање параметара функцијама. У овој техници, уместо да проследимо копије стварних параметара, прослеђујемо референце на стварне параметре.
Белешка: Референце нису ништа друго до псеудоними променљивих или једноставним речима, то је друго име које се даје променљивој. Отуда променљива и њена референца деле исту меморијску локацију. Референце ћемо детаљно научити у нашем следећем упутству.
У техници прослеђивања помоћу референци користимо ове референце стварних параметара и као резултат тога, промене направљене у формалним параметрима у функцији се одражавају натраг позивајућој функцији.
Измењујемо нашу функцију замене како би читаоци боље разумели концепт.
#include #include using namespace std; void swap(int &a, int &b){ int temp = a; a = b; b = temp; } int main() { int a,b; cout<>a>>b; cout<<'a = '< Прођите поред Поинтер У Ц ++ такође можемо проследити параметре да функционишу помоћу променљивих показивача. Техника прослеђивања показивача даје исте резултате као и прослеђивање референцом. То значи да и формални и стварни параметри деле исте меморијске локације и промене направљене у функцији одражавају се у позивајућој функцији.
Једина разлика је што се у просљеђивању путем референце бавимо референцама или псеудонимима параметара, док у техници просљеђивања показивача користимо показивачке варијабле за просљеђивање параметара.
Показивачке променљиве се разликују од референци у којима показивачке променљиве упућују на одређену променљиву и за разлику од референци, ми можемо променити променљиву на коју указује. Детаље показивача истражићемо у нашим наредним водичима.
Поново представљамо замену два цела броја да бисмо демонстрирали Пасс би Поинтер технику.
#include #include using namespace std; void swap(int *a, int *b) { int temp = *a; *a = *b; *b = temp; } int main() { int a,b; cout<>a>>b; cout<<'a = '< Задани параметри У Ц ++-у можемо пружити подразумеване вредности за параметре функције. У овом случају, када позивамо функцију, не специфицирамо параметре. Уместо тога, функција узима подразумеване параметре који су наведени у прототипу.
Следећи пример показује употребу задатих параметара.
#include #include using namespace std; int mathoperation(int a, int b = 3, int c = 2){ return ((a*b)/c); } int main() { int a,b,c; cout<>a>>b>>c; cout< Излаз:
Унесите вредности за а, б и ц: 10 4 6
Позив на матхоператион са 1 арг: 15
Позив на матхоперацију са 2 арг: 20
Позив на матхоператион са 3 арг: 6
Као што је приказано у примеру кода, имамо функцију „матхоператион“ која узима три параметра од којих смо обезбедили подразумеване вредности за два параметра. Затим у главној функцији ову функцију позивамо три пута са другом листом аргумената.
Први позив је са само једним аргументом. У овом случају, друга два аргумента ће имати подразумеване вредности. Следећи позив је са два аргумента. У овом случају, трећи аргумент ће имати подразумевану вредност. Трећи позив је са три аргумента. У овом случају, као што смо навели сва три аргумента, подразумеване вредности ће се занемарити.
Имајте на уму да док пружамо задане параметре, увек полазимо од крајњег десног параметра. Такође, не можемо прескочити параметар између њих и пружити подразумевану вредност за следећи параметар.
Пређимо сада на неколико концепата повезаних са посебним функцијама који су важни са становишта програмера.
Параметри Цонст
Такође можемо проследити константне параметре функцијама помоћу кључне речи ‘цонст’. Када је параметар или референца цонст, не може се променити унутар функције.
Имајте на уму да параметар цонст не можемо проследити формалном параметру који није цонст. Али цонст и нон-цонст параметар можемо проследити формалном параметру цонст.
Слично томе, можемо имати и цонст ретурн-типе. У овом случају, такође, тип повратка не може се изменити.
Погледајмо Пример кода који користи цонст референце.
#include #include using namespace std; int addition(const int &a, const int &b){ return (a+b); } int main() { int a,b; cout<>a>>b; cout<<'a = '< Излаз:
Унесите два броја која треба заменити: 22 33
а = 2 б = 33
Резултат додавања: 55
У горе наведеном програму имамо цонст формалне параметре. Имајте на уму да су стварни параметри обичне нон-цонст променљиве које смо успешно проследили. Како су формални параметри цонст, не можемо их модификовати унутар функције. Дакле, ми само извршимо операцију сабирања и вратимо вредност.
Ако покушамо да изменимо вредности а или б унутар функције, компајлер ће издати грешку.
Инлине функције
Знамо да за упућивање позива функције интерно укључује компајлер који складишти стање програма у стеку пре него што пређе контролу на функцију.
Када се функција врати, компајлер мора да врати стање програма натраг и настави од места где је и отишао. Ово представља режију. Дакле, у Ц ++-у кад год имамо функцију која се састоји од неколико изјава, постоји могућност која јој омогућава да се прошири у линији. То се постиже тако што се функција постави у линију.
Дакле, уграђене функције су функције које се проширују током извођења, штедећи напоре да се функција позове и изврше модификације стека. Али чак и ако направимо функцију као уграђену, компајлер не гарантује да ће бити проширена током извођења. Другим речима, потпуно зависи од компајлера да ли ће функција бити инлине или не.
Неки компајлери откривају мање функције и проширују их убаченим у ред чак и ако нису декларисане.
Следи пример уграђене функције.
inline int addition(const int &a,const int &b){ return (a+b); }
Као што је горе приказано, испред дефиниције функције стављамо кључну реч „инлине“ како бисмо функцију учинили инлине.
Коришћење структура у функцијама
Структурне променљиве можемо проследити као параметре како би функционисале на сличан начин на који прослеђујемо обичне променљиве као параметре.
То је приказано у следећем примеру.
#include #include using namespace std; struct PersonInfo { int age; char name(50); double salary; }; void printStructInfo(PersonInfo p) { cout<<'PersonInfo Structure:'; cout<<'
Age:'< p.age; cout <> p.salary; printStructInfo(p); }
Излаз:
Унесите име: Веданг
Унесите године: 22
Унесите плату: 45000,00
Структура ПерсонИнфо:
Старост: 22
Име: Веданг
Плата: 45000

Као што је приказано у горњем програму, преносимо структуру да функционише на сличан начин као и друге променљиве. Читамо вредности за чланове структуре са стандардног улаза, а затим прослеђујемо структуру функцији која приказује структуру.
Закључак
Овде се радило о основама функција у Ц ++-у.
Истражит ћемо више о статичким функцијама на Ц ++ у нашим наредним водичима.
=> Овде погледајте комплетну Ц ++ БЕСПЛАТНУ серију тренинга.
Препоручено читање
- Питхон функције
- Функције датума и времена у Ц ++ са примерима
- Функције скрипте Уник љуске са параметрима и повратом
- Водич за Питхон ДатеТиме са примерима
- Важне функције ЛоадРуннер-а које се користе у ВуГен скриптама са примерима
- Питхон Стринг функције
- Водич за главне функције Питхона са практичним примерима
- Функције пријатеља у Ц ++