Sve što trebate znati o funkcijama u C-u?



Ovaj će vam članak predstaviti jednostavan, ali vrlo temeljni i važan koncept, a to je Funkcije u C-u, i slijediti ga s demonstracijom.

Ovaj članak predstavit će vam jednostavan, ali vrlo važan i važan koncept koji je Funkcije u C i slijedite ga s demonstracijom. U ovom će članku biti obrađeni sljedeći putokazi,

Funkcije su gradivni blokovi bilo kojeg programskog jezika. Jednostavnim riječima, funkcionirajte u skupu naredbi, koji uzima ulaze, izvršava određeni zadatak i zatim vraća izlaz.
Ideologija koja stoji iza stvaranja funkcije jest povezivanje skupa povezanih izjava koje izvršavaju određeni zadatak. Dakle, ne morate više puta pisati isti kod za različite skupove ulaza. Jednostavno morate pozvati funkciju za različite ulaze, ona će izvršiti zadani zadatak za zadati ulaz i vratiti izlaz. Možete pozvati funkciju koliko god puta želite. Na ovom blogu naučit ćemo svaku i svaku nijansu o funkcijama u programskom jeziku C.





Krenimo od najosnovnijeg pitanja.

Što su funkcije u C-u?

Funkcije su iste u C kao i bilo koji drugi programski jezik. To je skup kodova povezanih za obavljanje određenog zadatka. Skup koda koji treba izvršiti naveden je u kovrčavim zagradama, tj. „{}“.



Prije nego što naučimo kako napisati funkciju na C, prvo shvatimo koje su prednosti.

Prednosti funkcija u C

Prednosti funkcija zajedničke su svim programskim jezicima.
Glavna ideja koja stoji iza funkcije je smanjiti suvišnost koda. Pretpostavimo da imate funkcionalnost koju treba izvesti više puta u programu, pa umjesto da je pišete više puta, možete stvoriti funkciju za taj zadatak i pozvati je koliko god puta želite. Još jedna skrivena prednost je ako se logika vaše funkcionalnosti promijeni nakon toga, ne morate je mijenjati na više mjesta. Jednostavno morate promijeniti kod na jednom mjestu (tj. U funkciji) i to bi se odrazilo u cijelom programu.

Modularnost je opet dodatna prednost. Pisanje velikog dijela koda, uključujući svaki i sve, smanjuje čitljivost koda i otežava upravljanje. Kôd možete podijeliti u odjeljke za pojedine funkcionalnosti pomoću funkcija, što je jednostavnije za razumijevanje i lakše za upravljanje.



Funkcija također pruža apstrakciju, gdje možemo pozvati funkciju i dobiti izlaz bez poznavanja interne implementacije.

Nastavljamo s vrstama funkcije C

Vrste funkcija u C

Postoje dvije vrste funkcija:
Funkcije knjižnice
Korisnički definirane funkcije

Funkcije knjižnice su one funkcije koje su već definirane u C knjižnici, poput strcat (), printf (), scanf () itd. Samo trebate uključiti odgovarajuće datoteke zaglavlja da biste koristili ove funkcije.
Korisnički definirane funkcije su one funkcije koje definira korisnik. Ove su funkcije stvorene za ponovnu upotrebu koda i za uštedu vremena i prostora.

Sad kad znamo prednosti stvaranja funkcije, shvatimo kako se funkcija deklarira u C.

Izjava i definicija funkcije

Izjava o funkciji:

Sintaksa deklaracije funkcije:

return_type ime_funkcije (data_type arg1, data_type arg2) int add (int x, int y) // deklaracija funkcije

U Deklaraciji funkcije navodimo naziv funkcije, broj ulaznog parametra, njihove tipove podataka i povratni tip funkcije. Deklaracija funkcije govori kompajleru o popisu argumenata koje funkcija očekuje s njihovim vrstama podataka i tipom povrata funkcije.

U deklaraciji funkcije, navođenje imena parametra nije obavezno, ali navođenje njihovih vrsta podataka je obavezno.

int add (int, int) // deklaracija funkcije

Gore navedena funkcija uzeti će dva cjelobrojna parametra.

Definicija funkcije

 Slika- Funkcije u C- Edureka
int add (int, int) // deklaracija funkcije return_type funkcija_ime (parametri) {Function body}

Kao što je prikazano na gornjoj slici, definicija funkcije sastoji se od dva dijela, tj. Zaglavlje funkcije i tijelo funkcije

Zaglavlje funkcije: zaglavlje funkcije isto je što i deklaracija funkcije bez zareza. Zaglavlje funkcije sadrži ime funkcije, parametar i vrstu povrata.

  • Vrsta povrata: Tip povrata je tip podataka vrijednosti koju će funkcija vratiti. Funkcija može ili ne mora vratiti vrijednost. Ako se dogodi, tada treba navesti vrstu podataka vrijednosti ponovnog prikazivanja, u suprotnom vrsta povratka mora biti nevažeća.

  • Naziv funkcije: Ovo je naziv funkcije pomoću koje možemo pozvati funkciju kada i gdje je to potrebno.

  • Parametri: Parametri su ulazne vrijednosti koje će se proslijediti funkciji. Govori o vrstama podataka argumenata, njihovom redoslijedu i broju argumenata koji će se proslijediti funkciji. Parametri nisu obvezni. Možete imati i funkcije bez parametara.

Tijelo funkcije: Tijelo funkcije je skup izraza koji izvršava određeni zadatak. Definira što funkcija radi.

Primjer:

int dodaj (int x, int y) {int zbroj = x + y povratak (zbroj)}

Preporučuje se deklariranje funkcije prije nego što je definiramo i koristimo. U C-u funkciju možemo deklarirati i definirati na istom mjestu.

Primjer:

#include int add (int, int) // deklaracija funkcije // definicija funkcije int add (int x, int y) // zaglavlje funkcije {// tijelo funkcije int sum = x + y return (sum)} // Glavna funkcija int main () {int zbroj = dodaj (23, 31) printf ('% d', zbroj) return 0}

Kao što možemo vidjeti u gornjem primjeru da funkciju pozivamo pomoću izraza int sum = add (23, 31). Vraćena vrijednost iz funkcije pohranjuje se u varijablu zbroja.

Prije nego što krenemo naprijed, postoji još jedan važan koncept koji treba razumjeti o paramentu. Postoje dvije vrste parametara:

Stvarni parametar : Oni parametri koji se prosljeđuju funkcijama tijekom njihovog poziva poznati su kao stvarni parametri. Na primjer, 23 i 31 u gornjem primjeru su stvarni parametri.

Formalni parametar : Oni parametri koje funkcije primaju poznati su kao formalni parametri. Na primjer, x & y u gornjem primjeru su formalni parametri.

Krenimo brzo i shvatimo različite načine pozivanja funkcije u C.

Pozivanje funkcije

Postoje dva načina na koja možemo pozvati funkciju:

  • Nazovite prema vrijednosti
  • Nazovite putem reference

Nazovite prema vrijednosti

U pozivu metodom vrijednosti vrijednost stvarnog parametra prenosi se kao argument funkciji. Vrijednost stvarnog parametra ne mogu se mijenjati formalnim parametrima.

U metodi poziva biti vrijednost, različita adresa memorije dodjeljuje se formalnim i stvarnim parametrima. Samo se vrijednost stvarnog parametra kopira u formalni parametar.

Primjer:

#include void Call_By_Value (int num1) {num1 = 42 printf ('nInside Function, Number is% d', num1)} int main () {int num num = 24 printf ('nPrije funkcije, Number je% d', num ) Call_By_Value (num) printf ('nNakon funkcije, broj je% dn', num) return 0}

Izlaz

U gornjem primjeru, prije poziva funkcijom vrijednosti, vrijednost num je 24. Tada, nakon što pozovemo funkciju i proslijedimo vrijednost, te je promijenimo unutar funkcije, ona postaje 42. Kada se vratimo i ponovno ispišemo vrijednost broja u glavnoj funkciji, postaje 24.

Nazovite putem reference

U pozivu putem reference, memorijska adresa stvarnog parametra prenosi se funkciji kao argument. Ovdje se vrijednost stvarnog parametra može mijenjati formalnim parametrom.

Ista adresa memorije koristi se i za stvarni i za formalni parametar. Dakle, ako se vrijednost formalnog parametra modificira, to se odražava i stvarnim parametrom.

U C koristimo pokazivače za provedbu poziva referencom. Kao što možete vidjeti u donjem primjeru, funkcija Call_By_Reference očekuje pokazivač na cijeli broj.

Sada će ova varijabla num1 pohraniti memorijsku adresu stvarnog parametra. Dakle, za ispis vrijednosti koja je pohranjena u memorijskoj adresi označenoj brojem num1 trebamo upotrijebiti dereference operator tj. *. Dakle, vrijednost * num1 je 42.

Operator adrese & koristi se za dobivanje adrese varijable bilo koje vrste podataka. Dakle, u izjavi poziva funkcije 'Call_By_Reference (& num)', adresa num se prenosi tako da se num može izmijeniti pomoću svoje adrese.

Primjer

#include // definicija funkcije void Call_By_Reference (int * num1) {* num1 = 42 printf ('nUnutarnja funkcija, broj je% d', * num1)} // Glavna funkcija int main () {int num num = 24 printf ( 'nPrije funkcije, broj je% d', num) Call_By_Reference (& num) printf ('nNakon funkcije, broj je% dn', num) return 0}

Izlaz

U ovom primjeru vrijednost num je u početku 24 unutar glavne funkcije. Jednom kada je proslijeđena funkciji Call_By_Reference i vrijednost je modificirana formalnim parametrom, promijenila se i za stvarni parametar. Zbog toga kada ispisujemo vrijednost num nakon funkcije, ona ispisuje 42.

Nastavljamo s vrstama korisnički definiranih funkcija u C-u

Vrste korisnički definirane Funkcija u C

Postoje razne vrste korisnički definiranih funkcija koje se temelje na vrsti povratka i prosljeđenim argumentima.

Kretanje dalje bez prosljeđenih argumenata i bez povratne vrijednosti

1.Nema prosljeđenih argumenata i nema povratne vrijednosti

Sintaksa:

deklaracija funkcije:

void function () function call: function () definicija funkcije: void function () {statement}

Primjer

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

Dalje bez prosljeđenih argumenata, ali povratne vrijednosti

2 Nisu proslijeđeni argumenti, već povratna vrijednost

Sintaksa:

deklaracija funkcije:

int funkcija () poziv funkcije: funkcija () definicija funkcije: int funkcija () {izrazi vraćaju a}

Primjer:

tip podataka za datum u sql
#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', zbroj) povratak 0}

Nastavljamo s prosljeđenim argumentima, ali nema povratne vrijednosti

3 Argument je proslijeđen, ali nema povratne vrijednosti

Sintaksa:

deklaracija funkcije:

void funkcija (int) poziv funkcije: funkcija (a) definicija funkcije: void funkcija (int a) {izjave}

Primjer:

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

Nastavljamo s prosljeđenim Argumentom i povratnom vrijednošću

4 Argument proslijeđen i povratna vrijednost

Sintaksa:

deklaracija funkcije:

int funkcija (int) poziv funkcije: funkcija (a) definicija funkcije: int funkcija (int a) {izrazi vraćaju a}

Primjer

#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' , zbroj) return 0}

Sada ćemo brzo pogledati funkcije knjižnice C koje su važne za pisanje programa.

C Knjižnične funkcije

Funkcije knjižnice su funkcije u C-u koje su unaprijed definirane i prisutne su prema zadanim postavkama. Jednostavno morate uključiti određenu datoteku zaglavlja u program i možete koristiti funkcije definirane u toj datoteci zaglavlja. Svaka datoteka zaglavlja pruža određenu vrstu funkcionalnosti. Proširenje datoteke zaglavlja je .h.

Na primjer, da bismo koristili funkcije printf / scanf, moramo u naš program uključiti stdio.h, koji pruža funkcionalnost u vezi sa standardnim ulazom / izlazom.

Slijedi popis datoteka zaglavlja.

jedanstdio.hStandardna datoteka zaglavlja ulaza / izlaza
2kovanje.hDatoteka zaglavlja ulazno / izlazne konzole
3niz.hFunkcije knjižnice povezane sa nizom kao što su gets (), put () itd.
4stdlib.hOpće funkcije knjižnice poput malloc (), calloc (), exit () itd.
5matematika.hFunkcije povezane s matematičkim operacijama poput sqrt (), pow () itd.
6vrijeme.hFunkcije povezane s vremenom
7ctype.hFunkcije rukovanja znakovima
8stdarg.hFunkcije varijabilnih argumenata
9signal.hFunkcije rukovanja signalom
10setjmp.hSkok funkcije
jedanaestlokalitet.hLokalne funkcije
12errno.hPogreška pri rukovanju funkcijama
13tvrditi.hDijagnostičke funkcije

Sada biste nakon prolaska kroz gornje C funkcije razumjeli svaku & svaku nijansu funkcije i kako je implementirati u C jezik. Nadam se da je ovaj blog informativan i da vam dodaje dodanu vrijednost.

Tako smo došli do kraja ovog članka o ‘Funkcijama u C’. Ako želite saznati više, pogledajte , pouzdana tvrtka za internetsko učenje. Edurekin tečaj za obuku i certificiranje Java J2EE i SOA osmišljen je kako bi vas osposobio za osnovne i napredne Java koncepte, zajedno s raznim Java okvirima poput Hibernate & Spring.

Imate pitanje za nas? Molimo vas da ga spominjete u odjeljku za komentare ovog bloga i javit ćemo vam se što je prije moguće.