EN brugerdefineret funktion er en type funktion i C-sprog, som er defineret af brugeren selv til at udføre en bestemt opgave. Det giver kodegenanvendelighed og modularitet til vores program. Brugerdefinerede funktioner er forskellige fra indbyggede funktioner, da deres funktion er specificeret af brugeren, og der kræves ingen header-fil til deres brug.
I denne artikel vil vi lære om brugerdefineret funktion, funktionsprototype, funktionsdefinition, funktionskald og forskellige måder, hvorpå vi kan overføre parametre til en funktion.
konvertere objekt til streng
Hvordan bruger man brugerdefinerede funktioner i C?
For at bruge en brugerdefineret funktion skal vi først forstå de forskellige dele af dens syntaks. Den brugerdefinerede funktion i C kan opdeles i tre dele:
- Funktionsprototype
- Funktionsdefinition
- Funktionsopkald
C Funktionsprototype
En funktionsprototype er også kendt som en funktionserklæring, der specificerer funktions navn, funktionsparametre, og returtype . Funktionsprototypen indeholder ikke funktionens krop. Det bruges grundlæggende til at informere compileren om eksistensen af den brugerdefinerede funktion, som kan bruges i den senere del af programmet.
Syntaks
return_type function_name (type1 arg1 , type2 arg2 , ... typeN argN );>
Vi kan også springe navnet på argumenterne over i funktionsprototypen. Så,
return_type function_name (type1 , type2 , ... typeN);>
C Funktionsdefinition
Når funktionen er blevet kaldt, indeholder funktionsdefinitionen de faktiske udsagn, der vil blive udført. Alle udsagn i funktionsdefinitionen er indesluttet i { } seler.
Syntaks
return_type function_name (type1 arg1 , type2 arg2 .... typeN argN ) { // actual statements to be executed // return value if any }> Bemærk: Hvis funktionskaldet er til stede efter funktionsdefinitionen, kan vi springe funktionsprototypedelen over og definere funktionen direkte.
C Funktionsopkald
For at overføre kontrol til en brugerdefineret funktion, skal vi kalde den. Funktioner kaldes ved at bruge deres navne efterfulgt af runde parenteser. Deres argumenter sendes inden for parentes.
Syntaks
function_name(arg1, arg2, ... argN);>
Eksempel på brugerdefineret funktion
Følgende C-program illustrerer, hvordan man bruger brugerdefinerede funktioner i vores 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;> }> |
>
>
streng til jsonobjectProduktion
Sum of 10 and 11 = 21>
Komponenter af funktionsdefinition
Der er tre komponenter i funktionsdefinitionen:
- Funktionsparametre
- Funktion Krop
- Returværdi
1. Funktionsparametre
Funktionsparametre (også kendt som argumenter) er de værdier, der sendes til den kaldte funktion af den, der ringer. Vi kan overføre ingen eller et hvilket som helst antal funktionsparametre til funktionen.
Vi skal definere funktionsnavnet og dets type i funktionsdefinitionen, og vi kan kun sende det samme antal og samme type parametre i funktionskaldet.
Eksempel
int foo ( int a, int b) ;>
Her, -en og b er funktionsparametre.
Bemærk: C-sprog giver en metode, hvormed vi kan sende et variabelt antal argumenter til funktionen. Sådanne funktioner kaldes variadisk funktion.
2. Funktion Krop
Funktionens krop er det sæt af udsagn, der er indesluttet i { } klammer. Det er de sætninger, der udføres, når funktionen kaldes.
Eksempel
int foo (int a, int b) { int sum = a + b; return sum; }> Her er udtalelserne mellem { og } er funktionslegeme.
3. Returværdi
Returværdien er den værdi, som funktionen returnerer til den, der ringer. En funktion kan kun returnere en enkelt værdi, og den er valgfri. Hvis der ikke skal returneres en værdi, er returtypen defineret som ugyldig.
Det returnere søgeord bruges til at returnere værdien fra en funktion.
Syntaks
return ( expression );>
Eksempel
int foo (int a, int b) { return a + b; }> Bemærk: Vi kan bruge pointere eller strukturer til at returnere flere værdier fra en funktion i C .
Overførsel af parametre til brugerdefinerede funktioner
Vi kan overføre parametre til en funktion i C ved hjælp af to metoder:
- Ring efter værdi
- Ring efter reference
1. Kald efter værdi
I call by value overføres en kopi af værdien til funktionen, og ændringer, der er foretaget i funktionen, reflekteres ikke tilbage til værdierne. Faktiske og formelle argumenter skabes på forskellige hukommelsessteder.
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
>Produktion
Values of x and y before swap are: 10, 20 Values of x and y after swap are: 10, 20>
Bemærk: Værdier ændres ikke i opkaldet efter værdi, da de ikke videregives ved reference.
2. Ring efter reference
I et opkald via reference sendes argumentets adresse til funktionen, og ændringer, der foretages i funktionen, reflekteres tilbage til værdierne. Vi bruger pointer af den nødvendige type for at modtage adressen i funktionen.
Eksempel
C
mamta kulkarni skuespiller
// 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;> }> |
>
>Produktion
Values of x and y before swap are: 10, 20 Values of x and y after swap are: 20, 10>
For flere detaljer, se denne artikel - Forskel mellem Call by Value og Call by Reference
Fordele ved brugerdefinerede funktioner
Fordelene ved at bruge funktioner i programmet er som følger:
- Man kan undgå duplikering af kode i programmerne ved at bruge funktioner. Kode kan skrives hurtigere og være mere læsbar som et resultat.
- Kode kan opdeles og erobres ved hjælp af funktioner. Denne proces er kendt som Divide and Conquer. Det er svært at skrive store mængder kode inden for hovedfunktionen, samt teste og fejlfinde. Vores ene opgave kan opdeles i flere mindre delopgaver ved at bruge funktioner, og dermed reducere den samlede kompleksitet.
- For eksempel, når man bruger pow, sqrt osv. i C uden at vide hvordan det er implementeret, kan man skjule implementeringsdetaljer med funktioner.
- Med få eller ingen ændringer kan funktioner udviklet i ét program bruges i et andet, hvilket reducerer udviklingstiden.