EN brukerdefinert funksjon er en type funksjon i C-språk som er definert av brukeren selv for å utføre en bestemt oppgave. Det gir kodegjenbrukbarhet og modularitet til programmet vårt. Brukerdefinerte funksjoner er forskjellig fra innebygde funksjoner ettersom deres virkemåte er spesifisert av brukeren og ingen overskriftsfil er nødvendig for bruken.
I denne artikkelen vil vi lære om brukerdefinert funksjon, funksjonsprototype, funksjonsdefinisjon, funksjonskall og ulike måter vi kan sende parametere til en funksjon på.
mission umulig alle filmer
Hvordan bruke brukerdefinerte funksjoner i C?
For å bruke en brukerdefinert funksjon, må vi først forstå de forskjellige delene av dens syntaks. Den brukerdefinerte funksjonen i C kan deles inn i tre deler:
- Funksjon Prototype
- Funksjonsdefinisjon
- Funksjonsanrop
C Funksjon Prototype
En funksjonsprototype er også kjent som en funksjonserklæring som spesifiserer funksjonens navn, funksjonsparametere, og returtype . Funksjonsprototypen inneholder ikke hoveddelen av funksjonen. Den brukes i utgangspunktet til å informere kompilatoren om eksistensen av den brukerdefinerte funksjonen som kan brukes i den senere delen av programmet.
Syntaks
return_type function_name (type1 arg1 , type2 arg2 , ... typeN argN );>
Vi kan også hoppe over navnet på argumentene i funksjonsprototypen. Så,
return_type function_name (type1 , type2 , ... typeN);>
C Funksjonsdefinisjon
Når funksjonen er kalt, inneholder funksjonsdefinisjonen de faktiske setningene som vil bli utført. Alle setningene i funksjonsdefinisjonen er innesluttet { } tannregulering.
Syntaks
return_type function_name (type1 arg1 , type2 arg2 .... typeN argN ) { // actual statements to be executed // return value if any }> Merk: Hvis funksjonskallet er tilstede etter funksjonsdefinisjonen, kan vi hoppe over funksjonsprototypedelen og definere funksjonen direkte.
C funksjonsanrop
For å overføre kontroll til en brukerdefinert funksjon, må vi kalle den. Funksjoner kalles ved å bruke navn etterfulgt av runde parenteser. Argumentene deres sendes innenfor parentes.
Syntaks
function_name(arg1, arg2, ... argN);>
Eksempel på brukerdefinert funksjon
Følgende C-program illustrerer hvordan du bruker brukerdefinerte funksjoner i programmet vårt.
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;> }> |
>
>
gjeldende dato i javaProduksjon
Sum of 10 and 11 = 21>
Komponenter av funksjonsdefinisjon
Det er tre komponenter i funksjonsdefinisjonen:
- Funksjonsparametere
- Funksjon Body
- Returverdi
1. Funksjonsparametre
Funksjonsparametere (også kjent som argumenter) er verdiene som sendes til den kalte funksjonen av den som ringer. Vi kan sende ingen eller et hvilket som helst antall funksjonsparametere til funksjonen.
Vi må definere funksjonsnavnet og dets type i funksjonsdefinisjonen, og vi kan bare sende samme antall og type parametere i funksjonskallet.
Eksempel
int foo ( int a, int b) ;>
Her, en og b er funksjonsparametere.
Merk: C-språket gir en metode der vi kan sende variabelt antall argumenter til funksjonen. Slike funksjoner kalles variadisk funksjon .
2. Funksjon Body
Funksjonskroppen er settet med setninger som er omsluttet av { } klammeparenteser. De er setningene som utføres når funksjonen kalles.
Eksempel
int foo (int a, int b) { int sum = a + b; return sum; }> Her er uttalelsene mellom { og } er funksjonskropp.
3. Returverdi
Returverdien er verdien som returneres av funksjonen til den som ringer. En funksjon kan bare returnere en enkelt verdi, og den er valgfri. Hvis ingen verdi skal returneres, er returtypen definert som ugyldig.
De returner søkeord brukes til å returnere verdien fra en funksjon.
Syntaks
return ( expression );>
Eksempel
int foo (int a, int b) { return a + b; }> Merk: Vi kan bruke pekere eller strukturer for å returnere flere verdier fra en funksjon i C .
Overføring av parametere til brukerdefinerte funksjoner
Vi kan sende parametere til en funksjon i C ved å bruke to metoder:
- Ring etter verdi
- Ring etter referanse
1. Ring etter verdi
I call by value sendes en kopi av verdien til funksjonen og endringer som er gjort i funksjonen reflekteres ikke tilbake til verdiene. Faktiske og formelle argumenter lages på forskjellige minneplasseringer.
Eksempel
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;> }> |
>
latex tekststørrelse
>Produksjon
Values of x and y before swap are: 10, 20 Values of x and y after swap are: 10, 20>
Merk: Verdier endres ikke i anropet etter verdi siden de ikke sendes via referanse.
2. Ring etter referanse
I en call by Reference blir adressen til argumentet sendt til funksjonen, og endringer som er gjort i funksjonen reflekteres tilbake til verdiene. Vi bruker pekere av ønsket type for å motta adressen i funksjonen.
Eksempel
C
java programmer
// 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;> }> |
>
>Produksjon
Values of x and y before swap are: 10, 20 Values of x and y after swap are: 20, 10>
For mer informasjon, se denne artikkelen – Forskjellen mellom Call by Value og Call by Reference
Fordeler med brukerdefinerte funksjoner
Fordelene ved å bruke funksjoner i programmet er som følger:
- Man kan unngå duplisering av kode i programmene ved å bruke funksjoner. Kode kan skrives raskere og bli mer lesbar som et resultat.
- Kode kan deles og erobres ved hjelp av funksjoner. Denne prosessen er kjent som Divide and Conquer. Det er vanskelig å skrive store mengder kode innenfor hovedfunksjonen, samt testing og feilsøking. Vår ene oppgave kan deles inn i flere mindre deloppgaver ved å bruke funksjoner, og dermed redusere den totale kompleksiteten.
- For eksempel når man bruker pow, sqrt osv. i C uten å vite hvordan det er implementert, kan man skjule implementeringsdetaljer med funksjoner.
- Med små eller ingen modifikasjoner kan funksjoner utviklet i ett program brukes i et annet, noe som reduserer utviklingstiden.