A funktion i C är en uppsättning påståenden som när de kallas utför någon specifik uppgift. Det är den grundläggande byggstenen i ett C-program som ger modularitet och kodåteranvändbarhet. Programmeringssatserna för en funktion är inneslutna i { } tandställning , har vissa betydelser och utför vissa operationer. De kallas också för subrutiner eller procedurer på andra språk.
I den här artikeln kommer vi att lära oss om funktioner, funktionsdefinition. deklaration, argument och parametrar, returvärden och många fler.
Syntax för funktioner i C
Funktionens syntax kan delas in i tre aspekter:
- Funktionsdeklaration Funktionsdefinition Funktionsanrop
Funktionsdeklarationer
I en funktionsdeklaration måste vi ange funktionsnamnet, dess returtyp och antalet och typen av dess parametrar. En funktionsdeklaration talar om för kompilatorn att det finns en funktion med det angivna namnet definierat någon annanstans i programmet.
Syntax
return_type name_of_the_function ( parameter_1 , parameter_2 );>
Parameternamnet är inte obligatoriskt när funktioner deklareras. Vi kan också deklarera funktionen utan att använda namnet på datavariablerna.
Exempel
int sum (int a , int b ); int sum (int , int);>

Funktionsdeklaration
Notera: En funktion i C måste alltid deklareras globalt innan den anropas.
Funktionsdefinition
Funktionsdefinitionen består av faktiska satser som exekveras när funktionen anropas (dvs när programkontrollen kommer till funktionen).
En C-funktion definieras och deklareras generellt i ett enda steg eftersom funktionsdefinitionen alltid börjar med funktionsdeklarationen så vi behöver inte deklarera den explicit. Exemplet nedan fungerar både som en funktionsdefinition och en deklaration.
return_type function_name (para1_type para1_name, para2_type para2_name ) { // body of the function }> 
Funktionsdefinition i C
Funktionsanrop
Ett funktionsanrop är en sats som instruerar kompilatorn att utföra funktionen. Vi använder funktionsnamnet och parametrarna i funktionsanropet.
I exemplet nedan anropas den första summafunktionen och 10,30 skickas till summafunktionen. Efter funktionsanropet returneras summan av a och b och kontrollen återgår också tillbaka till programmets huvudfunktion.

Funktionsarbete i C
Notera: Funktionsanrop är nödvändigt för att föra programkontrollen till funktionsdefinitionen. Om den inte anropas kommer funktionssatserna inte att exekveras.
Exempel på C-funktion
C
// C program to show function> // call and definition> #include> // Function that takes two parameters> // a and b as inputs and returns> // their sum> int> sum(>int> a,>int> b)> {> >return> a + b;> }> // Driver code> int> main()> {> >// Calling sum function and> >// storing its value in add variable> >int> add = sum(10, 30);> > >printf>(>'Sum is: %d'>, add);> >return> 0;> }> |
>
abs c-kod
>Produktion
Sum is: 40>
Som vi märkte har vi inte använt explicit funktionsdeklaration. Vi definierade och kallade helt enkelt funktionen.
Funktion Returtyp
Funktionsreturtyp talar om vilken typ av värde som returneras efter att alla funktioner har utförts. När vi inte vill returnera ett värde kan vi använda datatypen void.
Exempel:
int func(parameter_1,parameter_2);>
Ovanstående funktion kommer att returnera ett heltalsvärde efter att ha kört programsatser inuti funktionen.
Notera: Endast ett värde kan returneras från en C-funktion. För att returnera flera värden måste vi använda pekare eller strukturer.
Funktionsargument
Funktionsargument (även kända som funktionsparametrar) är data som skickas till en funktion.
Exempel:
int function_name(int var1, int var2);>
Villkor för returtyper och argument
I programmeringsspråket C kan funktioner anropas antingen med eller utan argument och kan returnera värden. De kan eller kanske inte returnerar värden till de anropande funktionerna.
- Funktion utan argument och inget returvärde
- Funktion utan argument och med returvärde
- Funktion med argument och utan returvärde
- Funktion med argument och med returvärde
För att veta mer om funktionsargument och returvärden, se artikeln – Funktionsargument & returvärden i C .
Hur fungerar C-funktionen?
Arbetet med C-funktionen kan delas in i följande steg som nämns nedan:
- Deklarera en funktion: Deklarera en funktion är ett steg där vi deklarerar en funktion. Här definierar vi funktionens returtyper och parametrar.
- Definiera en funktion: Anropa funktionen: Att anropa funktionen är ett steg där vi anropar funktionen genom att skicka argumenten i funktionen. Att köra funktionen: Att köra funktionen är ett steg där vi kan köra alla satser inuti funktionen för att få det slutliga resultatet. Returnera ett värde: Att returnera ett värde är steget där det beräknade värdet efter exekveringen av funktionen returneras. Att lämna funktionen är det sista steget där allt tilldelat minne till variablerna, funktionerna etc förstörs innan man ger full kontroll till huvudfunktionen.
Typer av funktioner
Det finns två typer av funktioner i C:
- Biblioteksfunktioner Användardefinierade funktioner

Typer av funktioner i C
1. Biblioteksfunktion
En biblioteksfunktion kallas också en inbyggd funktion . Det finns redan ett kompilatorpaket som innehåller dessa funktioner, som var och en har en specifik betydelse och ingår i paketet. Inbyggda funktioner har fördelen att de är direkt användbara utan att vara definierade, medan användardefinierade funktioner måste deklareras och definieras innan de används.
Till exempel:
pow(), sqrt(), strcmp(), strcpy() etc.>
Fördelar med C-biblioteksfunktioner
- C Library-funktionerna är enkla att använda och optimerade för bättre prestanda.
- C-biblioteksfunktioner sparar mycket tid, dvs funktionsutvecklingstid.
- C-biblioteksfunktioner är bekväma eftersom de alltid fungerar.
Exempel:
C
imessage-spel för Android
// C program to implement> // the above approach> #include> #include> // Driver code> int> main()> {> >double> Number;> >Number = 49;> >// Computing the square root with> >// the help of predefined C> >// library function> >double> squareRoot =>sqrt>(Number);> > >printf>(>'The Square root of %.2lf = %.2lf'>,> >Number, squareRoot);> >return> 0;> }> |
>
>Produktion
The Square root of 49.00 = 7.00>
2. Användardefinierad funktion
Funktioner som programmeraren skapar kallas användardefinierade funktioner eller skräddarsydda funktioner . Användardefinierade funktioner kan förbättras och modifieras efter programmerarens behov. Närhelst vi skriver en funktion som är fallspecifik och inte är definierad i någon rubrikfil, måste vi deklarera och definiera våra egna funktioner enligt syntaxen.
Fördelar med användardefinierade funktioner
- Utbytbara funktioner kan ändras efter behov.
- Koden för dessa funktioner kan återanvändas i andra program.
- Dessa funktioner är lätta att förstå, felsöka och underhålla.
Exempel:
C
// C program to show> // user-defined functions> #include> int> sum(>int> a,>int> b)> {> >return> a + b;> }> // Driver code> int> main()> {> >int> a = 30, b = 40;> > >// function call> >int> res = sum(a, b);> >printf>(>'Sum is: %d'>, res);> >return> 0;> }> |
>
>Produktion
Sum is: 70>
Överför parametrar till funktioner
Data som skickas när funktionen anropas kallas för faktiska parametrar. I programmet nedan är 10 och 30 kända som faktiska parametrar. Formella parametrar är variabeln och datatypen som nämns i funktionsdeklarationen. I programmet nedan är a och b kända som formella parametrar.

Överför parametrar till funktioner
Vi kan skicka argument till C-funktionen på två sätt:
- Passera värde
- Passera referens
1. Passera värde
Parameterpassering i denna metod kopierar värden från faktiska parametrar till formella funktionsparametrar. Som ett resultat av detta återspeglas inte alla ändringar som görs i funktionerna i den som ringer upp parametrarna.
Exempel:
C
// C program to show use> // of call by value> #include> void> swap(>int> var1,>int> var2)> {> >int> temp = var1;> >var1 = var2;> >var2 = temp;> }> // Driver code> int> main()> {> >int> var1 = 3, var2 = 2;> >printf>(>'Before swap Value of var1 and var2 is: %d, %d
'>,> >var1, var2);> >swap(var1, var2);> >printf>(>'After swap Value of var1 and var2 is: %d, %d'>,> >var1, var2);> >return> 0;> }> |
>
>
java tecken till strängProduktion
Before swap Value of var1 and var2 is: 3, 2 After swap Value of var1 and var2 is: 3, 2>
2. Passera referens
Uppringarens faktiska parametrar och funktionens faktiska parametrar hänvisar till samma platser, så alla ändringar som görs i funktionen återspeglas i uppringarens faktiska parametrar.
Exempel:
C
// C program to show use of> // call by Reference> #include> void> swap(>int> *var1,>int> *var2)> {> >int> temp = *var1;> >*var1 = *var2;> >*var2 = temp;> }> // Driver code> int> main()> {> >int> var1 = 3, var2 = 2;> >printf>(>'Before swap Value of var1 and var2 is: %d, %d
'>,> >var1, var2);> >swap(&var1, &var2);> >printf>(>'After swap Value of var1 and var2 is: %d, %d'>,> >var1, var2);> >return> 0;> }> |
>
>Produktion
Before swap Value of var1 and var2 is: 3, 2 After swap Value of var1 and var2 is: 2, 3>
Fördelar med funktioner i C
Funktioner i C är en mycket användbar funktion i C med många fördelar som nämns nedan:
- Funktionen kan minska upprepningen av samma påståenden i programmet.
- Funktionen gör koden läsbar genom att tillhandahålla modularitet till vårt program.
- Det finns inget fast antal samtalsfunktioner det kan ringas hur många gånger du vill.
- Funktionen minskar storleken på programmet.
- När funktionen är deklarerad kan du bara använda den utan att tänka på funktionens interna funktion.
Nackdelar med funktioner i C
Följande är de största nackdelarna med funktioner i C:
- Kan inte returnera flera värden.
- Minnes- och tidsoverhead på grund av stackframe-allokering och överföring av programkontroll.
Slutsats
I den här artikeln diskuterade vi följande punkter om funktionen som nämns nedan:
10 miljoner
- Funktionen är kodblocket som kan återanvändas hur många gånger vi vill i ett program.
- För att använda en funktion måste vi anropa en funktion.
- Funktionsdeklarationen inkluderar funktionsnamn, returtyp och parametrar.
- Funktionsdefinitionen inkluderar funktionens kropp.
- Funktionen är av två typer användardefinierad funktion och biblioteksfunktion.
- I funktion kan vi enligt två typer call by value och call by reference enligt de värden som passerats.
Vanliga frågor om funktioner i C
Q1. Definiera funktioner.
Svar:
Funktioner är det kodblock som exekveras varje gång de anropas under körning av ett program.
Q2. Vad är en framåtriktad deklaration?
Svar:
Ibland definierar vi funktionen efter dess anrop för att ge bättre lättillgänglighet. I sådana fall deklarerar vi funktion före deras definition och anrop. Sådan förklaring kallas Forward Declaration.
Q3. Vad är skillnaden mellan funktionsdeklaration och definition?
Svar:
Data som funktionsnamn, returtyp och parametern ingår i funktionsdeklarationen medan definitionen är funktionens kropp. Alla dessa data delas med kompilatorn enligt deras motsvarande steg.
Q4. Vad är skillnaden mellan funktionsargument och parametrar?
Svar:
Funktionsparametrar är de värden som deklareras i en funktionsdeklaration. Medan funktionsargument är de värden som skickas i funktionen under funktionsanropet.
Exempel:
int func(int x,int y); func(10,20);>Här är int x och int y parametrar medan 10 och 20 är de argument som skickas till funktionen.
För att veta mer om det, se den här artikeln – Difference between Arguments and Parameters in C .
F5. Kan vi returnera flera värden från en C-funktion?
Svar:
Nej, det är i allmänhet inte möjligt att returnera flera värden från en funktion. Men vi kan antingen använda pekare till statiska eller heap-minnesplatser för att returnera flera värden eller så kan vi lägga in data i strukturera och sedan returnera strukturen.
För att veta mer om det, se den här artikeln - Hur returnerar man flera värden från en funktion i C eller C++?
F6. Vad är den faktiska och formella parametern?
Svar:
Formell parameter: Variablerna som deklareras i funktionsprototypen kallas formella argument eller parametrar.
Faktisk parameter: Värdena som skickas i funktionen kallas faktiska argument eller parametrar.