Allt du behöver veta om funktioner i C?



Denna artikel kommer att introducera dig till ett enkelt men ändå ett mycket grundläggande och viktigt koncept som är Funktioner i C och följa upp det med en demonstration.

Denna artikel kommer att introducera dig till en enkel men ändå mycket grundläggande och viktig koncept som är Funktioner i C och följ upp det med en demonstration. Följande tips kommer att behandlas i den här artikeln,

Funktioner är byggstenar i vilket programmeringsspråk som helst. I enkla ord, fungera i en uppsättning uttalanden, som tar ingångar, utför en specifik uppgift och returnerar sedan utdata.
Ideologin bakom att skapa funktion är att binda samman en uppsättning relaterade uttalanden som utför en specifik uppgift. Så att du inte behöver skriva samma kod flera gånger för olika ingångar. Du måste bara anropa funktionen för olika ingångar, den kommer att utföra den angivna uppgiften för den angivna ingången och returnera utgången. Du kan ringa funktionen så många gånger du vill. I den här bloggen lär vi oss alla nyanser om funktioner i C-programmeringsspråk.





Låt oss börja med den mest grundläggande frågan.

Vad är funktioner i C?

Funktionerna är desamma i C som för alla andra programmeringsspråk. Det är en uppsättning koder som binder ihop för att utföra en specifik uppgift. Koduppsättningen som ska köras specificeras i lockiga hakparenteser, dvs. ”{}”.



Innan vi lär oss att skriva en funktion i C, låt oss först förstå vad fördelarna är.

Fördelar med funktioner i C

Fördelarna med funktioner är vanliga i alla programmeringsspråk.
Huvudidén bakom funktionen är att minska redundansen i koden. Antag att du har en funktion som måste utföras flera gånger i ett program, så istället för att skriva den flera gånger kan du skapa en funktion för den uppgiften och ringa den så många gånger du vill. En annan dold fördel är att om logiken för din funktion ändras efteråt behöver du inte fortsätta och ändra den på flera platser. Du måste bara ändra koden på ett ställe (dvs i funktionen) & det kommer att återspeglas i hela programmet.

Modularitet i igen en extra fördel. Att skriva en stor kod inklusive alla & allt, minskar kodens läsbarhet och gör det svårt att hantera. Du kan dela koden i avsnitt för individuella funktioner med hjälp av funktioner, vilket är enklare att förstå och lättare att hantera.



Funktion ger också abstraktion, där vi kan ringa en funktion och få utdata utan att känna till den interna implementeringen.

Fortsätter med typer av funktion C

Funktionstyper i C

Det finns två typer av funktioner:
Biblioteksfunktioner
Användardefinierade funktioner

Biblioteksfunktioner är de funktioner som redan är definierade i C-biblioteket som strcat (), printf (), scanf () etc. Du behöver bara inkludera lämpliga sidfiler för att använda dessa funktioner.
Användardefinierade funktioner är de funktioner som definieras av användaren. Dessa funktioner är gjorda för återanvändning av kod och för att spara tid och utrymme.

Nu när vi vet fördelarna med att skapa en funktion ska vi förstå hur man deklarerar en funktion i C.

Funktionsdeklaration och definition

Funktionsdeklaration:

Syntax för funktionsdeklaration:

return_type function_name (data_type arg1, data_type arg2) int add (int x, int y) // funktionsdeklaration

I funktionsdeklarationen anger vi namnet på funktionen, antalet ingångsparametrar, deras datatyper och funktionens returtyp. Funktionsdeklaration berättar kompilatorn om listan över argument som funktionen förväntar sig med sina datatyper och funktionens returtyp.

I funktionsdeklarationen är det valfritt att ange parameternamnen, men att specificera deras datatyper är obligatoriskt.

int add (int, int) // funktionsdeklaration

Ovannämnda funktion tar två heltalsparametrar.

Funktionsdefinition

 Bildfunktioner i C-Edureka
int lägg till (int, int) // funktionsdeklaration return_type funktionsnamn (parametrar) {Funktionsdel}

Som visas i bilden ovan består en funktionsdefinition av två delar, dvs funktionshuvud och funktionsdel

Funktionsrubrik: funktionshuvud är samma som funktionsdeklaration utan semikolon. Funktionsrubriken innehåller funktionsnamn, parameter och returtyp.

  • Returtyp: Returtyp är datatypen för värdet som returneras av funktionen. Funktionen kan returnera ett värde eller inte. Om den gör det ska datatypen för omstämningsvärdet anges, annars måste returtypen ogiltigförklaras.

  • Funktionsnamn: Detta är namnet på den funktion som vi kan ringa funktionen när & när det behövs.

  • Parametrar: Parametrarna är de ingångsvärden som skickas till funktionen. Den berättar om datatyperna för argumenten, deras ordning och antalet argument som kommer att skickas till funktionen. Parametrarna är valfria. Du kan också ha funktioner utan parametrar.

Funktion kropp: Funktionskroppen är den uppsättning uttalande som utför en specifik uppgift. Den definierar vad funktionen gör.

Exempel:

int lägg till (int x, int y) {int sum = x + y return (sum)}

Det rekommenderas att deklarera en funktion innan vi definierar och använder den. I C kan vi deklarera och definiera funktionen på samma plats.

Exempel:

#include int add (int, int) // funktionsdeklaration // funktionsdefinition int add (int x, int y) // funktionshuvud {// funktionsdel int sum = x + y return (sum)} // Huvudfunktion int main () {int sum = add (23, 31) printf ('% d', sum) return 0}

Som vi kan se i exemplet ovan att vi kallar funktionen med int sum = add (23, 31) uttalande. Det returnerade värdet från funktionen lagras i sumvariabeln.

Innan vi går vidare finns det ett viktigt koncept att förstå om paramentet. Det finns två typer av parametrar:

Faktisk parameter : De parametrar som skickas till funktioner medan de anropas kallas för verklig parameter. Till exempel är 23 & 31 i ovanstående exempel de faktiska parametrarna.

Formell parameter : De parametrar som tas emot av funktionerna kallas formella parametrar. Exempelvis är x & y i ovanstående exempel de formella parametrarna.

Låt oss snabbt gå vidare och förstå de olika sätten att anropa en funktion i C.

Ringa en funktion

Det finns två sätt på vilka vi kan kalla en funktion:

  • Ring efter värde
  • Ring genom referens

Ring efter värde

I metod för samtalsvärde skickas värdet på den aktuella parametern som ett argument till funktionen. Värdet på den faktiska parametern kan inte ändras av de formella parametrarna.

I call be value-metoden tilldelas olika minnesadresser till formella och faktiska parametrar. Bara värdet på den faktiska parametern kopieras till den formella parametern.

Exempel:

#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 ('nAfter Function, Number is% dn', num) return 0}

Produktion

slå ihop sorteringsprogram i Java

I exemplet ovan, innan samtal efter värde-funktion, är värdet num 24. Så snart vi ringer till funktionen och skickar värdet och ändrar det inuti funktionen blir det 42. När vi kommer tillbaka och skriver ut värdet igen av numret i huvudfunktionen blir det 24.

Ring genom referens

I samtal med referens skickas minnesadressen för den aktuella parametern till funktionen som argument. Här kan värdet på den aktuella parametern ändras med den formella parametern.

Samma minnesadress används för både den faktiska och formella parametern. Så om värdet på den formella parametern ändras, återspeglas den också av den faktiska parametern.

I C använder vi pekare för att implementera samtal genom referens. Som du kan se i exemplet nedan förväntar sig funktionen Call_By_Reference en pekare till ett heltal.

Nu kommer den här variabeln num1 att lagra minnesadressen för den aktuella parametern. Så, för att skriva ut det värde som lagras i minnesadressen pekad av num1 måste vi använda dereference-operatören dvs *. Så värdet på * num1 är 42.

Adressoperatören & används för att få adressen till en variabel av vilken datatyp som helst. Så i funktionssamtalet ”Call_By_Reference (& num)” skickas adressen till num så att num kan ändras med dess adress.

Exempel

#include // funktionsdefinition ogiltig Call_By_Reference (int * num1) {* num1 = 42 printf ('nInside Function, Number is% d', * num1)} // Huvudfunktion int main () {int num num = 24 printf ( 'nFöre funktion är antalet% d', num) Call_By_Reference (& num) printf ('nEfter funktion är Number% dn', num) return 0}

Produktion

I det här exemplet är värdet för num från början 24 inom huvudfunktionen. När den väl har skickats till funktionen Call_By_Reference och värdet har modifierats av den formella parametern, ändrades den också för den faktiska parametern. Det är därför när vi skriver ut värdet på num efter funktionen skriver det ut 42.

Fortsätter med typer av användardefinierade funktioner i C

Typer av användardefinierade Fungera i C

Det finns olika typer av användardefinierade funktioner baserat på returtyp och skickade argument.

Fortsätter utan argument överförda och inget returvärde

1. Inga argument överförda och inget returvärde

Syntax:

funktionsdeklaration:

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

Exempel

#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 utan några argument överförda men ett returvärde

2 Inga argument passerade men ett returvärde

Syntax:

funktionsdeklaration:

int-funktion () funktionsanrop: funktion () funktionsdefinition: int-funktion () {uttalanden returnerar a}

Exempel:

#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', summa) returnera 0}

Fortsätt med godkända argument men inget returvärde

3 Argument passerat men inget returvärde

Syntax:

funktionsdeklaration:

ogiltig funktion (int) funktionsanrop: funktion (a) funktionsdefinition: ogiltig funktion (int a) {uttalanden}

Exempel:

#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 Argument passerat och ett returvärde

4 Argument passerat och ett returvärde

Syntax:

funktionsdeklaration:

int-funktion (int) funktionsanrop: funktion (a) funktionsdefinition: int-funktion (int a) {uttalanden returnerar a}

Exempel

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

Låt oss nu snabbt titta på C-biblioteksfunktionerna som är viktiga för att kunna skriva ett program.

C Bibliotekets funktioner

Biblioteksfunktioner är funktioner i C som är fördefinierade och finns som standard. Du måste bara inkludera den specifika rubrikfilen i programmet och du kan använda de funktioner som definierats i den rubrikfilen. Varje rubrikfil ger specifik funktionalitet. Förlängningen av rubrikfilen är .h.

För att till exempel använda funktionerna printf / scanf måste vi inkludera stdio.h i vårt program, som tillhandahåller funktionalitet angående standardinmatning / utmatning.

Följande är listan med rubrikfiler.

ettstdio.hStandard in- / utgångshuvudfil
2prägling.hKonsolinmatnings- / utgångshuvudfil
3sträng.hSträngrelaterade biblioteksfunktioner som gets (), puts (), etc.
4stdlib.hAllmänna biblioteksfunktioner som malloc (), calloc (), exit (), etc.
5matte.hMatematiska funktioner relaterade funktioner som sqrt (), pow (), etc.
6tid.hTidsrelaterade funktioner
7ctype.hKaraktärshanteringsfunktioner
8stdarg.hVariabla argumentfunktioner
9signal.hSignalhanteringsfunktioner
10setjmp.hHoppfunktioner
elvalocale.hLokala funktioner
12errno.hFelhanteringsfunktioner
13hävda.hDiagnosfunktioner

Efter att ha gått igenom ovanstående C-funktioner skulle du ha förstått varje nyans av funktion och hur man implementerar den på C-språk. Jag hoppas att den här bloggen är informativ och ger ett mervärde för dig.

Således har vi kommit till slutet av denna artikel om ”Funktioner i C”. Om du vill veta mer, kolla in , ett pålitligt online-lärande företag. Edurekas Java J2EE- och SOA-utbildning och certifieringskurs är utformad för att träna dig för både grundläggande och avancerade Java-koncept tillsammans med olika Java-ramverk som Hibernate & Spring.

Har du en fråga till oss? Vänligen nämna det i kommentarsektionen på den här bloggen så kommer vi tillbaka till dig så snart som möjligt.