A door de gebruiker gedefinieerde functie is een type functie in C-taal dat door de gebruiker zelf wordt gedefinieerd om een specifieke taak uit te voeren. Het biedt herbruikbaarheid van code en modulariteit aan ons programma. Door de gebruiker gedefinieerde functies verschillen van ingebouwde functies, omdat hun werking door de gebruiker wordt gespecificeerd en er geen headerbestand vereist is voor het gebruik ervan.
In dit artikel zullen we meer te weten komen door de gebruiker gedefinieerde functie, functieprototype, functiedefinitie, functieaanroep en verschillende manieren waarop we parameters aan een functie kunnen doorgeven.
Java converteert char naar int
Hoe gebruik ik door de gebruiker gedefinieerde functies in C?
Om een door de gebruiker gedefinieerde functie te gebruiken, moeten we eerst de verschillende delen van de syntaxis ervan begrijpen. De door de gebruiker gedefinieerde functie in C kan in drie delen worden verdeeld:
- Functieprototype
- Functiedefinitie
- Functie oproep
C-functieprototype
Een functieprototype wordt ook wel een functiedeclaratie genoemd die de functienaam, functieparameters, En soort retour . Het functieprototype bevat niet de hoofdtekst van de functie. Het wordt in principe gebruikt om de compiler te informeren over het bestaan van de door de gebruiker gedefinieerde functie die in het latere deel van het programma kan worden gebruikt.
Syntaxis
return_type function_name (type1 arg1 , type2 arg2 , ... typeN argN );>
We kunnen ook de naam van de argumenten in het functieprototype overslaan. Dus,
return_type function_name (type1 , type2 , ... typeN);>

C Functiedefinitie
Zodra de functie is aangeroepen, bevat de functiedefinitie de daadwerkelijke instructies die zullen worden uitgevoerd. Alle instructies van de functiedefinitie zijn ingesloten { } beugel.
Syntaxis
return_type function_name (type1 arg1 , type2 arg2 .... typeN argN ) { // actual statements to be executed // return value if any }>
Opmerking: Als de functieaanroep aanwezig is na de functiedefinitie, kunnen we het functieprototypegedeelte overslaan en de functie direct definiëren.
C Functieoproep
Om de controle over te dragen aan een door de gebruiker gedefinieerde functie, moeten we deze aanroepen. Functies worden aangeroepen met hun naam, gevolgd door ronde haakjes. Hun argumenten worden tussen haakjes weergegeven.
Syntaxis
function_name(arg1, arg2, ... argN);>
Voorbeeld van door de gebruiker gedefinieerde functie
Het volgende C-programma illustreert hoe u door de gebruiker gedefinieerde functies in ons programma kunt gebruiken.
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;> }> |
>
>Uitvoer
Sum of 10 and 11 = 21>
Componenten van functiedefinitie
Er zijn drie componenten van de functiedefinitie:
- Functieparameters
- Functie Lichaam
- Winstwaarde
1. Functieparameters
Functieparameters (ook wel argumenten genoemd) zijn de waarden die door de aanroeper worden doorgegeven aan de aangeroepen functie. We kunnen geen of een willekeurig aantal functieparameters aan de functie doorgeven.
We moeten de functienaam en het type ervan definiëren in de functiedefinitie en we kunnen alleen hetzelfde aantal en type parameters doorgeven in de functieaanroep.
javascript-aanroepfunctie uit html
Voorbeeld
int foo ( int a, int b) ;>
Hier, A En B zijn functieparameters.
Opmerking: C-taal biedt een methode waarmee we een variabel aantal argumenten aan de functie kunnen doorgeven. Dergelijke functies worden variadische functie genoemd.
2. Functie Lichaam
De functiehoofdtekst is de reeks instructies die tussen accolades { } staan. Het zijn de instructies die worden uitgevoerd wanneer de functie wordt aangeroepen.
Voorbeeld
int foo (int a, int b) { int sum = a + b; return sum; }>
Hier de uitspraken tussen { En } is een functielichaam.
3. Retourwaarde
De retourwaarde is de waarde die door de functie wordt geretourneerd aan de aanroeper. Een functie kan slechts één waarde retourneren en is optioneel. Als er geen waarde moet worden geretourneerd, wordt het retourtype gedefinieerd als ongeldig.
De trefwoord retourneren wordt gebruikt om de waarde van een functie terug te geven.
Syntaxis
return ( expression );>
Voorbeeld
int foo (int a, int b) { return a + b; }>
Opmerking: We kunnen pointers of structuren gebruiken om meerdere waarden uit een functie in C terug te geven.
sorteer hoop
Parameters doorgeven aan door de gebruiker gedefinieerde functies
We kunnen parameters doorgeven aan een functie in C met behulp van twee methoden:
- Bellen op waarde
- Bellen via referentie
1. Bellen op waarde
Bij call by value wordt een kopie van de waarde doorgegeven aan de functie en worden wijzigingen die in de functie worden aangebracht niet teruggekaatst naar de waarden. Werkelijke en formele argumenten worden op verschillende geheugenlocaties aangemaakt.
Voorbeeld
C
selenium tutorial
// 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;> }> |
>
>Uitvoer
Values of x and y before swap are: 10, 20 Values of x and y after swap are: 10, 20>
Opmerking: Waarden worden in de aanroep niet op waarde gewijzigd, omdat ze niet door verwijzing worden doorgegeven.
2. Bellen via referentie
Bij een aanroep via Reference wordt het adres van het argument doorgegeven aan de functie, en wijzigingen die in de functie worden aangebracht, worden weerspiegeld in de waarden. Wij gebruiken de aanwijzingen van het vereiste type om het adres in de functie te ontvangen.
Voorbeeld
C
java toevoegen aan array
// 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;> }> |
>
>Uitvoer
Values of x and y before swap are: 10, 20 Values of x and y after swap are: 20, 10>
Raadpleeg dit artikel voor meer informatie: Verschil tussen Call by Value en Call by Reference
Voordelen van door de gebruiker gedefinieerde functies
De voordelen van het gebruik van functies in het programma zijn als volgt:
- Men kan duplicatie van code in de programma's voorkomen door functies te gebruiken. Code kan sneller worden geschreven en is daardoor beter leesbaar.
- Code kan worden verdeeld en veroverd met behulp van functies. Dit proces staat bekend als verdeel en heers. Het is moeilijk om grote hoeveelheden code binnen de hoofdfunctie te schrijven, evenals testen en debuggen. Onze ene taak kan worden opgedeeld in verschillende kleinere subtaken door functies te gebruiken, waardoor de algehele complexiteit wordt verminderd.
- Wanneer u bijvoorbeeld pow, sqrt, etc. in C gebruikt zonder te weten hoe het is geïmplementeerd, kunt u implementatiedetails verbergen met functies.
- Met weinig tot geen aanpassingen kunnen functies die in het ene programma zijn ontwikkeld, in een ander programma worden gebruikt, waardoor de ontwikkeltijd wordt verkort.