Всичко, което трябва да знаете за функциите в C?



Тази статия ще ви представи проста, но много фундаментална и важна концепция, която е Функции в C, и ще я последва с демонстрация.

Тази статия ще ви представи просто, но много фундаментално и важно концепция, която е Функции в C и я проследете с демонстрация. Следните указания ще бъдат обхванати в тази статия,

Функциите са градивни елементи на всеки език за програмиране. С прости думи, функция в набор от отчети, която взема входове, изпълнява конкретна задача и след това връща изхода.
Идеологията, която стои зад функцията за създаване, е да свърже набор от свързани изявления, които изпълняват конкретна задача. Така че, не е нужно да пишете един и същ код няколко пъти за различен набор от входове. Просто трябва да извикате функцията за различни входове, тя ще изпълни зададената задача за дадения вход и ще върне изхода. Можете да извикате функцията колкото пъти искате. В този блог ще научим всеки и всеки нюанс относно функциите в езика за програмиране C.





Нека започнем с най-фундаменталния въпрос.

Какви са функциите в C?

Функциите са същите в C като всеки друг език за програмиране. Това е набор от кодове, свързани заедно, за да се изпълни определена задача. Наборът от код, който трябва да се изпълни, е посочен в фигурни скоби, т.е. „{}“.



Преди да научите как да пишете функция в C, нека първо разберем какви са предимствата.

Предимства на функциите в C

Предимствата на функциите са общи за всички езици за програмиране.
Основната идея на функцията е да намали излишъка в кода. Да предположим, че имате функционалност, която трябва да бъде изпълнена многократно в програма, така че вместо да я пишете няколко пъти, можете да създадете функция за тази задача и да я извикате колкото пъти искате. Друго скрито предимство е, че ако логиката на вашата функционалност се промени след това, не е нужно да го променяте на няколко места. Просто трябва да промените кода на едно място (т.е. във функцията) и той ще бъде отразен в цялата програма.

Модулността в още една допълнителна полза. Писането на голяма част от кода, включително всяка и всичко, намалява четливостта на кода и затруднява управлението му. Можете да разделите кода на раздели за отделни функционалности, като използвате функции, което е по-лесно за разбиране и по-лесно за управление.



Функцията също така осигурява абстракция, където можем да извикаме функция и да получим изхода, без да знаем вътрешната реализация.

Продължаване с типове функция C

Видове функции в C

Има два типа функции:
Функции на библиотеката
Дефинирани от потребителя функции

Библиотечните функции са тези функции, които вече са дефинирани в C библиотека като strcat (), printf (), scanf () и т.н. Просто трябва да включите подходящи заглавни файлове, за да използвате тези функции.
Потребителски дефинирани функции са тези функции, които са дефинирани от потребителя. Тези функции са създадени за повторна употреба на кода и за спестяване на време и място.

Сега, когато знаем ползите от създаването на функция, нека разберем как да декларираме функция в C.

Декларация за функция и дефиниция

Декларация за функция:

Синтаксис на декларация за функция:

return_type функция_име (тип_данни arg1, тип_данни arg2) int добавяне (int x, int y) // декларация на функция

В Декларацията за функция ние посочваме името на функцията, броя на входния параметър, техните типове данни и типа на връщане на функцията. Декларацията на функцията разказва на компилатора за списъка с аргументи, които функцията очаква с техните типове данни и типа на връщане на функцията.

В декларацията за функция посочването на имената на параметъра не е задължително, но посочването на техните типове данни е задължително.

int add (int, int) // декларация за функция

Посочената по-горе функция ще вземе два целочислени параметъра.

как да пишете в java -

Определение на функцията

 Изображение- Функции в C- Edureka
int add (int, int) // декларация за функция return_type функция_име (параметри) {тяло на функцията}

Както е показано на горното изображение, дефиницията на функция се състои от две части, т.е.заглавка на функция и тяло на функцията

Заглавка на функцията: заглавката на функцията е същата като декларацията за функция без точка и запетая. Заглавката на функцията съдържа име на функция, параметър и тип връщане.

  • Тип на връщане: Тип връщане е типът данни за стойността, която ще бъде върната от функцията. Функцията може или не може да върне стойност. Ако това се случи, тогава трябва да се посочи типът на стойността за пренареждане, в противен случай типът на връщане трябва да бъде анулиран.

  • Име на функцията: Това е името на функцията, чрез която можем да извикаме функцията, когато и където е необходимо.

  • Параметри: Параметрите са входните стойности, които ще бъдат предадени на функцията. Той разказва за типовете данни на аргументите, техния ред и броя на аргументите, които ще бъдат предадени на функцията. Параметрите не са задължителни. Можете също така да имате функции без параметри.

Функция Тяло: Тялото на функцията е набор от изявления, който изпълнява конкретна задача. Той определя какво прави функцията.

Пример:

int добавяне (int x, int y) {int сума = x + y връщане (сума)}

Препоръчително е да декларирате функция, преди да я дефинираме и използваме. В C можем да декларираме и дефинираме функцията на едно и също място.

Пример:

#include int add (int, int) // декларация на функцията // дефиниция на функция int add (int x, int y) // заглавка на функция {// тяло на функцията int sum = x + y return (sum)} // Основна функция int main () {int sum = add (23, 31) printf ('% d', sum) return 0}

Както виждаме в горния пример, че извикваме функцията с помощта на оператора int sum = add (23, 31). Върнатата стойност от функцията се съхранява в променлива сума.

Преди да продължим напред, има още една важна концепция, която трябва да разберем за парамента. Има два типа параметри:

Действителен параметър : Тези параметри, които се предават на функциите при извикването им, са известни като действителен параметър. Например 23 и 31 в горния пример са действителните параметри.

Официален параметър : Тези параметри, които се получават от функциите, са известни като формални параметри. Например x & y в горния пример са формалните параметри.

Нека бързо да продължим напред и да разберем различните начини за извикване на функция в C.

Извикване на функция

Има два начина, по които можем да извикаме функция:

  • Обаждане по стойност
  • Обадете се чрез справка

Обаждане по стойност

При метод за извикване чрез стойност стойността на действителния параметър се предава като аргумент на функцията. Стойността на действителния параметър не може да бъде променена от официалните параметри.

В метода call be value различен адрес на паметта се разпределя към формални и действителни параметри. Просто стойността на действителния параметър се копира във формален параметър.

Пример:

db браузър за преглед на sqlite
#include void Call_By_Value (int num1) {num1 = 42 printf ('nInside Function, Number is% d', num1)} int main () {int num num = 24 printf ('nBefore Function, Number is% d', num ) Call_By_Value (num) printf ('nСлед функция, числото е% dn', num) return 0}

Изход

В горния пример, преди извикване чрез функция стойност, стойността на num е 24. Тогава, след като извикаме функцията и предадем стойността и я променим във функцията, тя става 42. Когато се върнем и отново отпечатаме стойността от num в основната функция, става 24.

Обадете се чрез справка

При повикване чрез препратка адресът на паметта на действителния параметър се предава на функцията като аргумент. Тук стойността на действителния параметър може да бъде променена от официалния параметър.

Един и същ адрес на паметта се използва както за действителния, така и за официалния параметър. Така че, ако стойността на официалния параметър е модифицирана, тя се отразява и от действителния параметър.

В C използваме указатели за реализиране на повикване чрез препратка. Както можете да видите в примера по-долу, функцията Call_By_Reference очаква указател към цяло число.

Сега тази променлива num1 ще съхранява адреса на паметта на действителния параметър. Така че, за да отпечатаме стойността, която се съхранява в адреса на паметта, посочен от num1, трябва да използваме оператор за пренасочване, т.е. *. И така, стойността на * num1 е 42.

Адресният оператор & се използва за получаване на адреса на променлива от всякакъв тип данни. Така в изявлението за извикване на функцията ‘Call_By_Reference (& num)’, адресът на num се предава, за да може num да бъде модифициран, използвайки неговия адрес.

Пример

#include // дефиниция на функция void Call_By_Reference (int * num1) {* num1 = 42 printf ('nInside Function, Number is% d', * num1)} // Основна функция int main () {int num num = 24 printf ( 'nПреди функцията, числото е% d', num) Call_By_Reference (& num) printf ('nСлед функцията, числото е% dn', num) return 0}

Изход

В този пример стойността на num е първоначално 24, вътре в основната функция. След като бъде предаден на функцията Call_By_Reference и стойността е модифицирана от официалния параметър, тя е променена и за действителния параметър. Ето защо, когато отпечатваме стойността на num след функцията, която отпечатва 42.

Продължаваме с типовете дефинирани от потребителя функции в C

Видове дефинирани от потребителя Функция в C

Има различни видове дефинирани от потребителя функции, базирани на типа връщане и предадените аргументи.

Продължаване без подадени аргументи и без върната стойност

1. Няма подадени аргументи и няма връщана стойност

Синтаксис:

декларация за функция:

void функция () извикване на функция: функция () дефиниция на функция: void функция () {изявления}

Пример

как да създам jframe
#include void add () void add () {int x = 20 int y = 30 int sum = x + y printf ('sum% d', sum)} int main () {add () return 0}

Придвижване с Няма подадени аргументи, но връщана стойност

2 Не са предадени аргументи, а връщана стойност

Синтаксис:

декларация за функция:

int функция () извикване на функция: функция () дефиниция на функция: int функция () {оператори връщат а}

Пример:

#include int add () int add () {int x = 20 int y = 30 int sum = x + y return (sum)} int main () {int sum sum = add () printf ('sum% d', сума) връщане 0}

Продължаване с предадени аргументи, но без върната стойност

3 Аргументът е приет, но няма връщана стойност

Синтаксис:

декларация за функция:

void функция (int) извикване на функция: функция (a) дефиниция на функция: void функция (int a) {изявления}

Пример:

#include void add (int, int) void add (int x, int y) {int sum = x + y return (sum)} int main () {add (23, 31) return 0}

Продължаване с предаден аргумент и възвръщаема стойност

4 Аргументът е приет и възвръщаема стойност

Синтаксис:

декларация за функция:

int функция (int) извикване на функция: функция (a) дефиниция на функция: функция int (int a) {оператори връщат a}

Пример

#include int add (int, int) int add (int x, int y) {int sum = x + y return (sum)} int main () {int sum = add (23, 31) printf ('% d' , сума) return 0}

Сега нека разгледаме бързо функциите на библиотеката C, които са важни за написването на програма.

C Библиотечни функции

Библиотечните функции са функции в C, които са предварително дефинирани и присъстват по подразбиране. Просто трябва да включите конкретния заглавен файл в програмата и можете да използвате функциите, дефинирани в този заглавен файл. Всеки заглавен файл предоставя специфичен вид функционалност. Разширението на заглавния файл е .h.

Например, за да използваме функциите printf / scanf, трябва да включим stdio.h в нашата програма, които предоставят функционалност по отношение на стандартния вход / изход.

Следва списъкът със заглавни файлове.

единstdio.hСтандартен входно / изходен заглавен файл
2сечене.чКонсолен входно / изходен заглавен файл
3низ.чФункции на библиотека, свързани със низове, като get (), put () и др.
4stdlib.hОбщи библиотечни функции като malloc (), calloc (), exit () и др.
5math.hФункции, свързани с математически операции като sqrt (), pow () и др.
6време.чФункции, свързани с времето
7ctype.hФункции за обработка на символи
8stdarg.hФункции на променливи аргументи
9сигнал.чФункции за обработка на сигнали
10setjmp.hФункции за скок
единадесетлокал.чЛокални функции
12errno.hФункции за обработка на грешки
13твърдя.чФункции за диагностика

След като преминете през горните C функции, бихте разбрали всеки и всеки нюанс на функцията и как да я приложите на C език. Надявам се, че този блог е информативен и с добавена стойност за вас.

Така стигнахме до края на тази статия за „Функции в C“. Ако искате да научите повече, разгледайте , доверена компания за онлайн обучение. Курсът за обучение и сертифициране на Java J2EE и SOA на Edureka е предназначен да ви обучи както за основните, така и за разширените Java концепции, заедно с различни Java рамки като Hibernate & Spring.

Имате въпрос към нас? Моля, споменете го в раздела за коментари на този блог и ние ще се свържем с вас възможно най-скоро.