Tot ce trebuie să știți despre funcțiile din C?



Acest articol vă va prezenta un concept simplu, dar foarte fundamental și important, care este Funcțiile în C și îl va urmări cu o demonstrație.

Acest articol vă va prezenta un simplu, dar foarte fundamental și important concept care este Funcții în C și urmăriți-l cu o demonstrație. Următoarele indicații vor fi tratate în acest articol,

Funcțiile sunt elemente constitutive ale oricărui limbaj de programare. În cuvinte simple, funcționează într-un set de instrucțiuni, care ia intrări, efectuează o sarcină specifică și apoi returnează ieșirea.
Ideologia din spatele funcției de creare este de a lega împreună un set de afirmații conexe care îndeplinește o sarcină specifică. Astfel, nu trebuie să scrieți același cod de mai multe ori pentru seturi diferite de intrări. Trebuie doar să apelați funcția pentru diferite intrări, aceasta va efectua sarcina specificată pentru intrarea dată și va returna ieșirea. Puteți apela funcția de câte ori doriți. În acest blog, vom învăța fiecare nuanță despre funcțiile în limbajul de programare C.





Să începem cu cea mai fundamentală întrebare.

Ce sunt funcțiile în C?

Funcțiile sunt aceleași în C ca în orice alt limbaj de programare. Este un set de coduri care se leagă împreună pentru a efectua o sarcină specifică. Setul de cod care urmează să fie executat este specificat în acolade, adică „{}”.



Înainte de a învăța cum să scrieți o funcție în C, să înțelegem mai întâi care sunt avantajele.

Avantajele funcțiilor în C

Avantajele funcțiilor sunt comune în toate limbajele de programare.
Ideea principală din spatele funcției este de a reduce redundanța în cod. Să presupunem că aveți o funcționalitate care trebuie efectuată de mai multe ori într-un program, astfel încât, în loc să o scrieți de mai multe ori, puteți crea o funcție pentru acea sarcină și o puteți apela de câte ori doriți. Un alt avantaj ascuns este că, dacă logica funcționalității tale se schimbă ulterior, atunci nu trebuie să mergi mai departe și să o schimbi în mai multe locuri. Trebuie doar să schimbați codul într-un singur loc (adică în funcție) și ar fi reflectat pe tot parcursul programului.

Modularitatea este din nou un avantaj suplimentar. Scrierea unei bucăți mari de cod, incluzând fiecare și orice, reduce lizibilitatea codului și face dificilă gestionarea acestuia. Puteți împărți codul în secțiuni pentru funcționalități individuale folosind funcții, care este mai ușor de înțeles și mai ușor de gestionat.



Funcția oferă, de asemenea, abstractizare, unde putem apela o funcție și obține rezultatul fără a cunoaște implementarea internă.

Continuăm cu tipurile de funcție C

Tipuri de funcții în C

Există două tipuri de funcții:
Funcțiile bibliotecii
Funcții definite de utilizator

Funcțiile de bibliotecă sunt acele funcții care sunt deja definite în biblioteca C, cum ar fi strcat (), printf (), scanf () etc. Trebuie doar să includeți fișiere antet adecvate pentru a utiliza aceste funcții.
Funcțiile definite de utilizator sunt acele funcții definite de utilizator. Aceste funcții sunt create pentru reutilizarea codului și pentru economisirea de timp și spațiu.

Acum, că cunoaștem avantajele creării unei funcții, să înțelegem cum să declarăm o funcție în C.

Declarație și definiție a funcției

Declarația funcției:

Sintaxa declarației funcției:

return_type nume_funcție (data_type arg1, data_type arg2) int add (int x, int y) // declarație funcție

În Declarația funcției, specificăm numele funcției, numărul parametrilor de intrare, tipurile lor de date și tipul de returnare a funcției. Declarația funcției îi spune compilatorului lista de argumente pe care funcția le așteaptă cu tipurile lor de date și tipul de returnare a funcției.

În declarația de funcție, specificarea numelor parametrilor este opțională, dar specificarea tipurilor de date ale acestora este obligatorie.

int add (int, int) // declarație funcție

Funcția specificată mai sus va lua doi parametri întregi.

Definiția funcției

 Funcții de imagine în C- Edureka
int add (int, int) // declarație funcție return_type nume funcție (parametri) {Body function}

Așa cum se arată în imaginea de mai sus, o definiție a funcției constă din două părți, adică antetul funcției și corpul funcției

Antet funcție: antetul funcției este același cu declarația funcției fără punct și virgulă. Antetul funcției conține numele funcției, parametrul și tipul de returnare.

  • Tip retur: Tipul returnat este tipul de date al valorii care va fi returnată de funcție. Funcția poate sau nu să returneze o valoare. În caz contrar, trebuie specificat tipul de date al valorii de reglare, altfel tipul de returnare trebuie anulat.

  • Numele funcției: Acesta este numele funcției cu care putem apela funcția atunci când și unde este necesar.

  • Parametri: Parametrii sunt valorile de intrare care vor fi transmise funcției. Acesta spune despre tipurile de date ale argumentelor, ordinea acestora și numărul de argumente care vor fi transmise funcției. Parametrii sunt opționali. De asemenea, puteți avea funcții fără parametri.

Corpul funcției: Corpul funcției este setul de instrucțiuni care efectuează o sarcină specifică. Acesta definește ce face funcția.

Exemplu:

int add (int x, int y) {int sum = x + y return (sum)}

Este recomandat să declarați o funcție înainte de a o defini și utiliza. În C, putem declara și defini funcția în același loc.

Exemplu:

#include int add (int, int) // declarație funcție // definiție funcție int add (int x, int y) // antet funcție {// corp funcție int sum = x + y return (sum)} // Funcția principală int main () {int sum = add (23, 31) printf ('% d', sum) return 0}

După cum putem vedea în exemplul de mai sus, apelăm funcția folosind instrucțiunea int sum = add (23, 31). Valoarea returnată din funcție este stocată în variabila sumă.

Înainte de a merge mai departe, mai există un concept important de înțeles despre parament. Există două tipuri de parametri:

Parametru real : Acei parametri care sunt trecuți la funcții în timp ce se apelează sunt cunoscuți ca parametri reali. De exemplu, 23 și 31 din exemplul de mai sus sunt parametrii reali.

Parametru formal : Acei parametri care sunt primiți de funcții sunt cunoscuți ca parametri formali. De exemplu, x & y în exemplul de mai sus sunt parametrii formali.

Să mergem rapid înainte și să înțelegem diferitele moduri de a apela o funcție în C.

Apelarea unei funcții

Există două moduri în care putem apela o funcție:

structura de bază a programului Java
  • Apelați după valoare
  • Apelați prin referință

Apelați după valoare

În metoda apelului prin valoare, valoarea parametrului real este transmisă ca argument către funcție. Valoarea parametrului real nu poate fi modificată de parametrii formali.

În metoda call be value, o adresă de memorie diferită este alocată parametrilor formali și reali. Doar valoarea parametrului real este copiată în parametrul formal.

Exemplu:

#include void Call_By_Value (int num1) {num1 = 42 printf ('nInterior Function, Number is% d', num1)} int main () {int num num = 24 printf ('nFace Function, Number is% d', num ) Call_By_Value (num) printf ('nAfter Function, Number is% dn', num) return 0}

Ieșire

În exemplul de mai sus, înainte de funcția de apelare după valoare, valoarea num este 24. Apoi, odată ce apelăm funcția și trecem valoarea și o schimbăm în interiorul funcției, ea devine 42. Când revenim și imprimăm din nou valoarea de num în funcția principală, devine 24.

Apelați prin referință

În apel prin referință, adresa de memorie a parametrului real este transmisă funcției ca argument. Aici, valoarea parametrului real poate fi modificată de parametrul formal.

Aceeași adresă de memorie este utilizată atât pentru parametrul actual cât și pentru cel formal. Deci, dacă valoarea parametrului formal este modificată, aceasta este reflectată și de parametrul real.

În C folosim indicii pentru a implementa apelul prin referință. După cum puteți vedea în exemplul de mai jos, funcția Call_By_Reference așteaptă un indicator către un număr întreg.

Acum, această variabilă num1 va stoca adresa de memorie a parametrului real. Deci, pentru a imprima valoarea stocată în adresa de memorie indicată de num1, trebuie să folosim operatorul de dereferință, adică *. Deci, valoarea lui * num1 este 42.

Operatorul de adresă & este utilizat pentru a obține adresa unei variabile de orice tip de date. Deci, în declarația de apel funcțional „Call_By_Reference (& num)”, adresa num este transmisă astfel încât num să poată fi modificat folosind adresa sa.

Exemplu

#include // function definition void Call_By_Reference (int * num1) {* num1 = 42 printf ('nInside Function, Number is% d', * num1)} // Main Function int main () {int num num = 24 printf ( 'nÎnainte de funcție, numărul este% d', num) Call_By_Reference (& num) printf ('nDupă funcție, numărul este% dn', num) returnează 0}

Ieșire

În acest exemplu, valoarea num este inițial 24, în interiorul funcției principale. Odată ce este trecută la funcția Call_By_Reference și valoarea este modificată de parametrul formal, aceasta a fost modificată și pentru parametrul real. Acesta este motivul pentru care, atunci când tipărim valoarea num după funcție, imprimăm 42.

Continuăm cu tipurile de funcții definite de utilizator în C

Tipuri de definite de utilizator Funcţie în C

Există diferite tipuri de funcții definite de utilizator pe baza tipului de returnare și a argumentelor transmise.

Continuăm fără Fără argumente trecute și fără valoare returnată

1. Nu s-au trecut argumente și nici o valoare returnată

Sintaxă:

declarație de funcție:

void function () function call: function () function function definition: void function () {statement}

Exemplu

#include void add () void add () {int x = 20 int y = 30 int sum = x + y printf ('sum% d', sum)} int main () {add () return 0}

Continuarea fără argumentele trecute, dar o valoare returnată

2 Nu s-au trecut argumente, ci o valoare returnată

Sintaxă:

declarație de funcție:

int function () function call: function () function function definition: int function () {statement return a}

Exemplu:

#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', sumă) returnează 0}

Continuând cu argumentele trecute, dar fără valoare returnată

3 Argumentul a trecut, dar nu există valoare de returnare

Sintaxă:

declarație de funcție:

funcție nulă (int) funcție apel: funcție (a) definiție funcție: funcție nulă (int a) {instrucțiuni}

Exemplu:

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

Continuarea cu Argumentul trecut și o valoare returnată

4 Argumentul a trecut și o valoare returnată

Sintaxă:

declarație de funcție:

int function (int) function call: function (a) function definition: int function (int a) {statement return a}

Exemplu

#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' , suma) returnează 0}

Acum, să ne uităm rapid la funcțiile bibliotecii C care sunt importante pentru a scrie un program.

C Funcții de bibliotecă

Funcțiile bibliotecii sunt funcții în C care sunt predefinite și sunt prezente în mod implicit. Trebuie doar să includeți fișierul antet specific în program și puteți utiliza funcțiile definite în acel fișier antet. Fiecare fișier antet oferă un anumit tip de funcționalitate. Extensia fișierului antet este .h.

De exemplu, pentru a utiliza funcțiile printf / scanf, trebuie să includem stdio.h în programul nostru, care oferă funcționalitate în ceea ce privește intrarea / ieșirea standard.

Urmează lista fișierelor antet.

unustdio.hFișier antet standard de intrare / ieșire
2bătere.hFișier antet intrare / ieșire consolă
3șir.hFuncțiile de bibliotecă legate de șiruri, cum ar fi gets (), put () etc.
4stdlib.hFuncții generale de bibliotecă, cum ar fi malloc (), calloc (), exit () etc.
5matematicăFuncții legate de operațiile matematice, cum ar fi sqrt (), pow () etc.
6timp.hFuncții legate de timp
7ctype.hFuncții de manipulare a caracterelor
8stdarg.hFuncții de argument variabile
9semnal.hFuncții de gestionare a semnalului
10setjmp.hFuncții de salt
unsprezecelocale.hFuncții locale
12errno.hFuncții de gestionare a erorilor
13afirma.hFuncții de diagnosticare

Acum, după ce ați parcurs funcțiile C de mai sus, ați fi înțeles fiecare nuanță a funcției și cum să o implementați în limbajul C. Sper că acest blog vă este informativ și cu valoare adăugată.

Astfel am ajuns la sfârșitul acestui articol despre „Funcții în C”. Dacă doriți să aflați mai multe, consultați , o companie de învățare online de încredere. Cursul de formare și certificare Java J2EE și SOA al Edureka este conceput pentru a vă instrui atât pentru conceptele Java de bază, cât și pentru cele avansate, împreună cu diverse cadre Java, cum ar fi Hibernate & Spring.

Ai o întrebare pentru noi? Vă rugăm să o menționați în secțiunea de comentarii a acestui blog și vă vom răspunde cât mai curând posibil.