logo

Door de gebruiker gedefinieerde functie in C

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:

  1. Functieprototype
  2. Functiedefinitie
  3. 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);>
Functieprototype

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:

  1. Functieparameters
  2. Functie Lichaam
  3. 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:

  1. Bellen op waarde
  2. 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.