Alt hvad du behøver at vide om funktioner i C?



Denne artikel vil introducere dig til et simpelt, men alligevel meget grundlæggende og vigtigt koncept, der er Funktioner i C og følge det op med en demonstration.

Denne artikel vil introducere dig til en enkel, men alligevel meget grundlæggende og vigtig koncept, der er Funktioner i C, og følg det op med en demonstration. Følgende punkter vil blive dækket i denne artikel,

Funktioner er byggesten i ethvert programmeringssprog. I enkle ord skal du fungere i et sæt udsagn, der tager input, udfører en bestemt opgave og derefter returnerer output.
Ideologien bag oprettelse af funktion er at binde et sæt beslægtet udsagn sammen, som udfører en bestemt opgave. Så du behøver ikke at skrive den samme kode flere gange for forskellige sæt input. Du skal bare kalde funktionen til forskellige indgange, den udfører den angivne opgave for den givne input og returnerer output. Du kan ringe til funktionen så mange gange som du vil. I denne blog lærer vi hver eneste nyanse om funktioner i C-programmeringssprog.





Lad os starte med det mest grundlæggende spørgsmål.

Hvad er funktioner i C?

Funktionerne er de samme i C som ethvert andet programmeringssprog. Det er et sæt koder, der binder sammen for at udføre en bestemt opgave. Kodesættet, der skal udføres, er specificeret i krøllede seler, dvs. '{}'.



Før vi lærer at skrive en funktion i C, skal vi først forstå, hvad fordelene er.

Fordele ved funktioner i C

Fordelene ved funktioner er fælles på tværs af alle programmeringssprog.
Hovedideen bag funktionen er at reducere redundansen i koden. Antag at du har en funktionalitet, der skal udføres flere gange i et program, så i stedet for at skrive den flere gange kan du oprette en funktion til den opgave og kalde den så mange gange, som du vil. En anden skjult fordel er, at hvis logikken i din funktion ændres bagefter, behøver du ikke gå videre og ændre den flere steder. Du skal bare ændre koden ét sted (dvs. i funktionen), og den afspejles i hele programmet.

Modularitet er igen en ekstra fordel. At skrive et stort stykke kode inklusive hver og alt, reducerer læsbarheden af ​​koden og gør det vanskeligt at administrere. Du kan opdele koden i sektioner for individuelle funktionaliteter ved hjælp af funktioner, som er lettere at forstå og lettere at administrere.



Funktion giver også abstraktion, hvor vi kan kalde en funktion og få output uden at kende den interne implementering.

Fortsætter med typer af funktion C

Funktionstyper i C

Der er to typer funktioner:
Biblioteksfunktioner
Brugerdefinerede funktioner

Biblioteksfunktioner er de funktioner, der allerede er defineret i C-bibliotek, såsom strcat (), printf (), scanf () osv. Du skal bare medtage passende headerfiler for at bruge disse funktioner.
Brugerdefinerede funktioner er de funktioner, der defineres af brugeren. Disse funktioner er lavet til genanvendelighed af koder og til at spare tid og plads.

Nu hvor vi kender fordelene ved at oprette en funktion, lad os forstå, hvordan man erklærer en funktion i C.

Funktionserklæring og definition

Funktionserklæring:

Syntaks for funktionserklæring:

return_type function_name (data_type arg1, data_type arg2) int add (int x, int y) // funktionserklæring

I funktionserklæring specificerer vi funktionens navn, antallet af inputparametre, deres datatyper og funktionstypens returtype. Funktionserklæring fortæller kompilatoren om listen over argumenter, som funktionen forventer, med deres datatyper og funktionstypens returtype.

I funktionserklæring er det valgfrit at specificere navnene på parameteren, men det er obligatorisk at specificere deres datatyper.

int tilføj (int, int) // funktionserklæring

Ovenstående specificerede funktion tager to heltalsparametre.

Funktionsdefinition

 Billedfunktioner i C-Edureka
int tilføj (int, int) // funktionserklæring return_type function_name (parameters) {Function body}

Som vist i ovenstående billede består en funktionsdefinition af to dele, dvs. funktionsoverskrift & funktionsdel

Funktionsoverskrift: funktionsoverskrift er den samme som funktionserklæring uden semikolon. Funktionsoverskrift indeholder funktionsnavn, parameter og returtype.

  • Returtype: Returtype er datatypen for den værdi, der returneres af funktionen. Funktionen returnerer muligvis ikke en værdi. Hvis den gør det, skal datatypen for omstillingsværdien specificeres, ellers skal returtypen annulleres.

  • Funktionsnavn: Dette er navnet på den funktion, hvor vi kan kalde funktionen, når & hvor det er nødvendigt.

  • Parametre: Parametrene er de inputværdier, der overføres til funktionen. Den fortæller om datatyperne for argumenterne, deres rækkefølge og antallet af argumenter, der sendes til funktionen. Parametrene er valgfri. Du kan også have funktioner uden parametre.

Funktion krop: Funktionslegemet er det sæt sætning, der udfører en bestemt opgave. Den definerer, hvad funktionen gør.

Eksempel:

salesforce-udviklervejledning til begyndere
int tilføj (int x, int y) {int sum = x + y return (sum)}

Det anbefales at erklære en funktion, før vi definerer og bruger den. I C kan vi erklære og definere funktionen samme sted.

Eksempel:

#include int add (int, int) // funktionserklæring // funktionsdefinition int add (int x, int y) // funktionsoverskrift {// funktionsdel int sum = x + y return (sum)} // Hovedfunktion int main () {int sum = add (23, 31) printf ('% d', sum) return 0}

Som vi kan se i eksemplet ovenfor, kalder vi funktionen ved hjælp af int sum = add (23, 31) udsagn. Den returnerede værdi fra funktionen gemmes i sumvariablen.

Før vi går videre, er der endnu et vigtigt koncept at forstå om paramentet. Der er to typer parametre:

Faktisk parameter : De parametre, der overføres til funktioner, mens de kaldes, kaldes den faktiske parameter. For eksempel er 23 & 31 i ovenstående eksempel de faktiske parametre.

Formel parameter : Disse parametre, som modtages af funktionerne, er kendt som formelle parametre. For eksempel er x & y i ovenstående eksempel de formelle parametre.

Lad os hurtigt gå videre og forstå de forskellige måder at kalde en funktion i C.

Opkald til en funktion

Der er to måder, hvorpå vi kan kalde en funktion:

  • Ring efter værdi
  • Ring ved henvisning

Ring efter værdi

I metode til opkald efter værdi overføres værdien af ​​den aktuelle parameter som et argument til funktionen. Værdien af ​​den aktuelle parameter kan ikke ændres af de formelle parametre.

I call be value-metode tildeles forskellige hukommelsesadresser til formelle og faktiske parametre. Bare værdien af ​​den aktuelle parameter kopieres til den formelle parameter.

Eksempel:

#include void Call_By_Value (int num1) {num1 = 42 printf ('nInside Function, Number is% d', num1)} int main () {int num num = 24 printf ('nFore Function, Number is% d', num ) Call_By_Value (num) printf ('nFunktion er nummer% dn', num) return 0}

Produktion

I ovenstående eksempel, før opkald efter værdi-funktion, er værdien af ​​tal 24. Så når vi ringer til funktionen og sender værdien og ændrer den inde i funktionen, bliver den 42. Når vi kommer tilbage og igen udskriver værdien af antal i hovedfunktion, bliver det 24.

Ring ved henvisning

I kald ved henvisning videresendes den aktuelle hukommelsesadresse til funktionen som argument. Her kan værdien af ​​den aktuelle parameter ændres med den formelle parameter.

Samme hukommelsesadresse bruges til både den aktuelle og formelle parameter. Så hvis værdien af ​​den formelle parameter ændres, reflekteres den også af den faktiske parameter.

I C bruger vi henvisninger til at implementere opkald ved henvisning. Som du kan se i nedenstående eksempel, forventer funktionen Call_By_Reference en markør til et heltal.

Nu vil denne num1-variabel gemme hukommelsesadressen for den aktuelle parameter. Så for at udskrive den værdi, der er gemt i den hukommelsesadresse, der er peget af num1, skal vi bruge dereferenceoperator dvs. *. Så værdien af ​​* num1 er 42.

Adresseoperatøren & bruges til at hente adressen på en variabel af enhver datatype. Så i funktionsopkaldsmeddelelsen 'Call_By_Reference (& num)' sendes adressen på num, så num kan ændres ved hjælp af dens adresse.

Eksempel

#include // funktionsdefinition ugyldig Call_By_Reference (int * num1) {* num1 = 42 printf ('nInside Function, Number is% d', * num1)} // Hovedfunktion int main () {int num num = 24 printf ( 'nFør funktion, nummer er% d', num) Call_By_Reference (& num) printf ('nEfter funktion er Number% dn', num) return 0}

Produktion

I dette eksempel er værdien af ​​num oprindeligt 24 inden i hovedfunktionen. Når den først er sendt til funktionen Call_By_Reference, og værdien er ændret af den formelle parameter, blev den også ændret for den aktuelle parameter. Dette er grunden til, at når vi udskriver værdien af ​​num efter funktionen, udskrives det 42.

Fortsætter med typer af brugerdefineret funktion i C

Typer af brugerdefinerede Fungere i C

Der er forskellige slags brugerdefinerede funktioner baseret på returtypen og de argumenter, der er sendt.

Fortsætter uden argumenter bestået og ingen returværdi

1.Ingen argumenter vedtaget og ingen returværdi

Syntaks:

funktionserklæring:

ugyldig funktion () funktionsopkald: funktion () funktionsdefinition: ugyldig funktion () {udsagn}

Eksempel

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

Fortsætter uden argumenter, men en returværdi

2 Ingen argumenter bestået, men en returværdi

Syntaks:

funktionserklæring:

int-funktion () funktionsopkald: funktion () funktionsdefinition: int-funktion () {udsagn returnerer a}

Eksempel:

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

Fortsætter med argumenter bestået, men ingen returværdi

3 Argument bestået, men ingen returværdi

Syntaks:

funktionserklæring:

ugyldig funktion (int) funktionsopkald: funktion (a) funktionsdefinition: ugyldig funktion (int a) {udsagn}

Eksempel:

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

Fortsætter med argumenter bestået og en returværdi

4 Argument bestået og en returværdi

Syntaks:

funktionserklæring:

int-funktion (int) funktionsopkald: funktion (a) funktionsdefinition: int-funktion (int a) {udsagn returnerer a}

Eksempel

#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}

Lad os nu hurtigt se på C-biblioteksfunktionerne, der er vigtige for at skrive et program.

C Bibliotekets funktioner

Biblioteksfunktioner er funktioner i C, som er foruddefinerede og findes som standard. Du skal bare medtage den specifikke headerfil i programmet, og du kan bruge de funktioner, der er defineret i den headerfil. Hver header-fil giver specifik funktionalitet. Udvidelsen af ​​headerfilen er .h.

hvordan man opsætter atom til python

For eksempel for at bruge printf / scanf-funktionerne skal vi medtage stdio.h i vores program, som giver funktionalitet med hensyn til standard input / output.

Følgende er listen over headerfiler.

enstdio.hStandard input / output header-fil
2prægning.hKonsol input / output header-fil
3streng.hStringrelaterede biblioteksfunktioner såsom gets (), puts () osv.
4stdlib.hGenerelle biblioteksfunktioner såsom malloc (), calloc (), exit () osv.
5matematik.hMath-relaterede funktioner såsom sqrt (), pow () osv.
6tid. hTidsrelaterede funktioner
7ctype.hKarakterhåndteringsfunktioner
8stdarg.hVariable argumentfunktioner
9signal. hSignalhåndteringsfunktioner
10setjmp.hHopfunktioner
ellevelocale.hLokale funktioner
12errno.hFejlhåndteringsfunktioner
13hævder.hDiagnostikfunktioner

Efter at have gennemgået de ovennævnte C-funktioner ville du have forstået hver eneste nyanse af funktion og hvordan man implementerer den på C-sprog. Jeg håber, at denne blog er informativ og merværdi for dig.

Således er vi nået til slutningen af ​​denne artikel om 'Funktioner i C'. Hvis du ønsker at lære mere, skal du tjekke , et betroet online læringsfirma. Edurekas Java J2EE- og SOA-uddannelses- og certificeringskursus er designet til at træne dig til både kerne- og avancerede Java-koncepter sammen med forskellige Java-rammer som Hibernate & Spring.

Har du et spørgsmål til os? Nævn det i kommentarsektionen på denne blog, og vi vender tilbage til dig hurtigst muligt.