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:
- Funktionsprototyp
- Funktionsdefinition
- 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);>
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:
- Funktionsparametrar
- Funktion Kropp
- 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:
- Ring efter värde
- 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.