logo

Användardefinierad funktion i C

A användardefinierad funktion är en typ av funktion i C-språk som definieras av användaren själv för att utföra någon specifik uppgift. Det ger kodåteranvändbarhet och modularitet till vårt program. Användardefinierade funktioner skiljer sig från inbyggda funktioner eftersom deras funktion specificeras av användaren och ingen huvudfil krävs för deras användning.

I den här artikeln kommer vi att lära oss om användardefinierad funktion, funktionsprototyp, funktionsdefinition, funktionsanrop och olika sätt på vilka vi kan skicka parametrar till en funktion.

powershell större än eller lika

Hur använder man användardefinierade funktioner i C?

För att använda en användardefinierad funktion måste vi först förstå de olika delarna av dess syntax. Den användardefinierade funktionen i C kan delas in i tre delar:



  1. Funktionsprototyp
  2. Funktionsdefinition
  3. Funktionsanrop

C Funktion Prototyp

En funktionsprototyp är också känd som en funktionsdeklaration som specificerar funktions namn, funktionsparametrar, och returtyp . Funktionsprototypen innehåller inte huvuddelen av funktionen. Den används i princip för att informera kompilatorn om existensen av den användardefinierade funktionen som kan användas i den senare delen av programmet.

Syntax

return_type function_name  (type1 arg1 , type2 arg2 , ... typeN argN );>

Vi kan också hoppa över namnet på argumenten i funktionsprototypen. Så,

return_type function_name  (type1 , type2 , ... typeN);>
Funktionsprototyp

C Funktionsdefinition

När funktionen har anropats innehåller funktionsdefinitionen de faktiska satserna som kommer att köras. Alla uttalanden i funktionsdefinitionen är inneslutna i { } tandställning.

Syntax

return_type function_name (type1 arg1 , type2 arg2 .... typeN argN ) { // actual statements to be executed  // return value if any }>

Notera: Om funktionsanropet finns efter funktionsdefinitionen kan vi hoppa över funktionsprototypdelen och direkt definiera funktionen.

C Funktionsanrop

För att överföra kontrollen till en användardefinierad funktion behöver vi kalla den. Funktioner kallas med deras namn följt av runda parenteser. Deras argument skickas inom parentes.

Syntax

function_name(arg1, arg2, ... argN);>

Exempel på användardefinierad funktion

Följande C-program illustrerar hur man använder användardefinierade funktioner i vårt program.

C




// C Program to illustrate the use of user-defined function> #include> // Function prototype> int> sum(>int>,>int>);> // Function definition> int> sum(>int> x,>int> y)> {> >int> sum;> >sum = x + y;> >return> x + y;> }> // Driver code> int> main()> {> >int> x = 10, y = 11;> >// Function call> >int> result = sum(x, y);> >printf>(>'Sum of %d and %d = %d '>, x, y, result);> >return> 0;> }>

>

>

Produktion

Sum of 10 and 11 = 21>

Komponenter i funktionsdefinition

Det finns tre komponenter i funktionsdefinitionen:

  1. Funktionsparametrar
  2. Funktion Kropp
  3. Returvärde

1. Funktionsparametrar

Funktionsparametrar (även kända som argument) är de värden som skickas till den anropade funktionen av anroparen. Vi kan skicka ingen eller valfritt antal funktionsparametrar till funktionen.

Vi måste definiera funktionsnamnet och dess typ i funktionsdefinitionen och vi kan bara skicka samma antal och typ av parametrar i funktionsanropet.

skillnaden mellan program och script

Exempel

int foo ( int a, int b) ;>

Här, a och b är funktionsparametrar.

Notera: C-språket tillhandahåller en metod med vilken vi kan skicka ett variabelt antal argument till funktionen. Sådana funktioner kallas variadisk funktion.

2. Funktionskropp

Funktionskroppen är den uppsättning satser som är inneslutna inom { } klammerparenteser. De är de satser som exekveras när funktionen anropas.

Exempel

int foo (int a, int b) { int sum = a + b;  return sum; }>

Här uttalanden mellan { och } är funktionskropp.

3. Returvärde

Returvärdet är det värde som returneras av funktionen till den som ringer. En funktion kan bara returnera ett enda värde och det är valfritt. Om inget värde ska returneras definieras returtypen som ogiltig.

De returnera nyckelord används för att returnera värdet från en funktion.

Syntax

 return ( expression );>

Exempel

 int  foo (int a, int b) { return a + b; }>

Notera: Vi kan använda pekare eller strukturer för att returnera flera värden från en funktion i C .

för loopar java

Överför parametrar till användardefinierade funktioner

Vi kan skicka parametrar till en funktion i C med två metoder:

  1. Ring efter värde
  2. Ring via referens

1. Ring efter värde

I call by value skickas en kopia av värdet till funktionen och ändringar som görs i funktionen reflekteras inte tillbaka till värdena. Faktiska och formella argument skapas på olika minnesplatser.

Exempel

insättning sortera java

C




// C program to show use of> // call by value> #include> void> swap(>int> a,>int> b)> {> >int> temp = a;> >a = b;> >b = temp;> }> // Driver code> int> main()> {> >int> x = 10, y = 20;> >printf>(>'Values of x and y before swap are: %d, %d '>, x,> >y);> >swap(x, y);> >printf>(>'Values of x and y after swap are: %d, %d'>, x,> >y);> >return> 0;> }>

>

>

Produktion

Values of x and y before swap are: 10, 20 Values of x and y after swap are: 10, 20>

Notera: Värden ändras inte i anropet efter värde eftersom de inte skickas med referens.

2. Ring via referens

I ett anrop via referens skickas argumentets adress till funktionen och ändringar som görs i funktionen reflekteras tillbaka till värdena. Vi använder pekare av den typ som krävs för att få adressen i funktionen.

Exempel

C




// C program to implement> // Call by Reference> #include> void> swap(>int>* a,>int>* b)> {> >int> temp = *a;> >*a = *b;> >*b = temp;> }> // Driver code> int> main()> {> >int> x = 10, y = 20;> >printf>(>'Values of x and y before swap are: %d, %d '>, x,> >y);> >swap(&x, &y);> >printf>(>'Values of x and y after swap are: %d, %d'>, x,> >y);> >return> 0;> }>

>

java generera slumptal
>

Produktion

Values of x and y before swap are: 10, 20 Values of x and y after swap are: 20, 10>

För mer information, se den här artikeln – Skillnaden mellan Call by Value och Call by Reference

Fördelar med användardefinierade funktioner

Fördelarna med att använda funktioner i programmet är följande:

  • Man kan undvika duplicering av kod i programmen genom att använda funktioner. Koden kan skrivas snabbare och blir mer läsbar som ett resultat.
  • Koden kan delas och erövras med hjälp av funktioner. Denna process är känd som Divide and Conquer. Det är svårt att skriva stora mängder kod inom huvudfunktionen, samt testa och felsöka. Vår ena uppgift kan delas upp i flera mindre deluppgifter genom att använda funktioner, vilket minskar den totala komplexiteten.
  • Till exempel, när man använder pow, sqrt, etc. i C utan att veta hur det är implementerat, kan man dölja implementeringsdetaljer med funktioner.
  • Med små eller inga ändringar kan funktioner som utvecklats i ett program användas i ett annat, vilket minskar utvecklingstiden.