Hvad er en funktion i C?
Funktion i C-programmering er en genanvendelig blok kode, der gør et program lettere at forstå, teste og let kan ændres uden at ændre opkaldsprogrammet. Funktioner deler koden og modulerer programmet for bedre og effektive resultater. Kort sagt er et større program opdelt i forskellige underprogrammer, der kaldes funktioner
Når du opdeler et stort program i forskellige funktioner, bliver det nemt at styre hver funktion individuelt. Når der opstår en fejl i programmet, kan du let undersøge defekte funktioner og kun rette disse fejl. Du kan nemt ringe til og bruge funktioner, når det er nødvendigt, hvilket automatisk sparer tid og plads.
I denne vejledning lærer du-
- Library Vs. Brugerdefinerede funktioner
- Funktionserklæring
- Funktionsdefinition
- Funktionsopkald
- Funktionsargumenter
- Variabelt anvendelsesområde
- Statiske variabler
- Rekursive funktioner
- Inline-funktioner
Library Vs. Brugerdefinerede funktioner
Hvert 'C' program har mindst en funktion, som er hovedfunktionen, men et program kan have et vilkårligt antal funktioner. Hovedfunktionen () i C er udgangspunktet for et program.
I 'C' programmering er funktioner opdelt i to typer:
- Biblioteksfunktioner
- Brugerdefinerede funktioner
Forskellen mellem biblioteket og brugerdefinerede funktioner i C er, at vi ikke behøver at skrive en kode til en biblioteksfunktion. Det er allerede til stede inde i headerfilen, som vi altid inkluderer i starten af et program. Du skal bare skrive navnet på en funktion og bruge den sammen med den korrekte syntaks. Printf, scanf er eksemplerne på en biblioteksfunktion.
Mens en brugerdefineret funktion er en type funktion, hvor vi skal skrive en krop af en funktion og kalde funktionen, når vi har brug for funktionen til at udføre en eller anden operation i vores program.
En brugerdefineret funktion i C skrives altid af brugeren, men senere kan den være en del af 'C' -biblioteket. Det er en stor fordel ved 'C' programmering.
C programmeringsfunktioner er opdelt i tre aktiviteter såsom,
- Funktionserklæring
- Funktionsdefinition
- Funktionsopkald
Funktionserklæring
Funktionserklæring betyder at skrive et programnavn. Det er en obligatorisk del til brug af funktioner i kode. I en funktionserklæring specificerer vi bare navnet på en funktion, som vi skal bruge i vores program som en variabelerklæring. Vi kan ikke bruge en funktion, medmindre den er erklæret i et program. En funktion erklæring kaldes også "Function prototype ."
Funktionserklæringerne (kaldet prototype) udføres normalt over hovedfunktionen () og tager den generelle form:
return_data_type function_name (data_type arguments);
- Den return_data_type : er datatypen af værdien funktionen returnerede tilbage til den kaldende erklæring.
- Den function_name : efterfølges af parenteser
- Argumentnavne med deres datatypedeklarationer er valgfrit placeret inden for parenteserne.
Vi overvejer følgende program, der viser, hvordan man deklarerer en terningsfunktion for at beregne terningsværdien for en heltalsvariabel
#include/*Function declaration*/int add(int a,b);/*End of Function declaration*/int main() {
Husk, at en funktion ikke nødvendigvis returnerer en værdi. I dette tilfælde bruges nøgleordet ugyldigt.
For eksempel angiver output_message-funktionserklæringen, at funktionen ikke returnerer en værdi: void output_message ();
Funktionsdefinition
Funktionsdefinition betyder blot at skrive kroppen til en funktion. En funktionsdel består af udsagn, der skal udføre en bestemt opgave. Et funktionsorgan består af en enkelt eller en blok af udsagn. Det er også en obligatorisk del af en funktion.
int add(int a,int b) //function body{int c;c=a+b;return c;}
Funktionsopkald
Et funktionsopkald betyder at ringe til en funktion, når det kræves i et program. Hver gang vi kalder en funktion, udfører den en operation, som den er designet til. Et funktionsopkald er en valgfri del i et program.
result = add(4,5);
Her er den komplette kode:
#includeint add(int a, int b); //function declarationint main(){int a=10,b=20;int c=add(10,20); //function callprintf("Addition:%d\n",c);getch();}int add(int a,int b) //function body{int c;c=a+b;return c;}
Produktion:
Addition:30
Funktionsargumenter
En funktions argumenter bruges til at modtage de nødvendige værdier af funktionsopkaldet. De matches med position; det første argument sendes til den første parameter, det andet til den anden parameter og så videre.
Som standard sendes argumenterne efter værdi , hvor en kopi af data gives til den kaldte funktion. Den faktisk beståede variabel ændres ikke.
Vi overvejer følgende program, der demonstrerer parametre, der er sendt af værdi:
int add (int x, int y);int main() {int a, b, result;a = 5;b = 10;result = add(a, b);printf("%d + %d\ = %d\n", a, b, result);return 0;}int add (int x, int y) {x += y;return(x);}
Programmets output er:
5 + 10 = 15
Husk, at værdierne for a og b blev videregivet for at tilføje funktion ikke blev ændret, fordi kun dens værdi blev videregivet til parameteren x.
Variabelt anvendelsesområde
Variabelt omfang betyder synligheden af variabler inden for en programkode.
I C er variabler, der er erklæret inde i en funktion, lokale for den kodeblok og kan ikke henvises til uden for funktionen. Imidlertid er variabler, der er erklæret uden for alle funktioner, globale og tilgængelige fra hele programmet. Konstanter, der er erklæret med #define øverst i et program, er tilgængelige fra hele programmet. Vi overvejer følgende program, der udskriver værdien af den globale variabel fra både hoved- og brugerdefineret funktion:
#includeint global = 1348;void test();int main() {printf("from the main function : global =%d \n", global);test () ;return 0;}void test (){printf("from user defined function : global =%d \n", global);}
Resultat:
from the main function : global =1348from user defined function : global =1348
Vi diskuterer programoplysningerne:
- Vi erklærer en global heltal med 1348 som startværdi.
- Vi erklærer og definerer en test () funktion, som hverken tager argumenter eller returnerer en værdi. Denne funktion udskriver kun den globale variabelværdi for at demonstrere, at de globale variabler er tilgængelige overalt i programmet.
- Vi udskriver den globale variabel inden for hovedfunktionen.
- Vi kalder testfunktionen i orde for at udskrive den globale variabelværdi.
I C, når argumenter sendes til funktionsparametre, fungerer parametrene som lokale variabler, som vil blive ødelagt, når funktionen afsluttes.
Når du bruger globale variabler, skal du bruge dem med forsigtighed, da det kan føre til fejl, og de kan ændres hvor som helst i et program. De skal initialiseres inden brug.
Statiske variabler
De statiske variabler har et lokalt omfang. De ødelægges dog ikke, når funktionen afsluttes. Derfor bevarer en statisk variabel sin værdi for evigt og kan tilgås, når funktionen genindtastes. En statisk variabel initialiseres, når den deklareres og har brug for præfikset statisk.
Følgende program bruger en statisk variabel:
#includevoid say_hi();int main() {int i;for (i = 0; i < 5; i++) { say_hi();}return 0;}void say_hi() {static int calls_number = 1;printf("Hi number %d\n", calls_number);calls_number ++; }
Programmet viser:
Hi number 1Hi number 2Hi number 3Hi number 4Hi number 5
Rekursive funktioner
Overvej faktoren for et tal, der beregnes som følger 6! = 6 * 5 * 4 * 3 * 2 * 1.
Denne beregning udføres som gentagne gange beregning af fakta * (fakt -1) indtil faktum er lig med 1.
En rekursiv funktion er en funktion, der kalder sig selv og inkluderer en exitbetingelse for at afslutte de rekursive opkald. I tilfælde af beregning af faktornummer er udgangsbetingelsen lig med 1. Rekursion fungerer ved at "stable" opkald, indtil den spændende tilstand er sand.
For eksempel:
#includeint factorial(int number);int main() {int x = 6;printf("The factorial of %d is %d\n", x, factorial(x));return 0;}int factorial(int number) {if (number == 1) return (1); /* exiting condition */elsereturn (number * factorial(number - 1));}
Programmet viser:
The factorial of 6 is 720
Her diskuterer vi programoplysninger:
- Vi erklærer vores rekursive faktorfunktion, der tager et heltalsparameter og returnerer faktorens faktor for denne parameter. Denne funktion kalder sig selv og formindsker antallet, indtil den afsluttende eller basistilstanden er nået. Når betingelsen er sand, multipliceres de tidligere genererede værdier med hinanden, og den endelige faktorværdi returneres.
- Vi erklærer og initialiserer en heltalsvariabel med værdien "6" og udskriver derefter dens faktorværdi ved at kalde vores faktorfunktion.
Overvej følgende skema for mere at forstå den rekursive mekanisme, der består i at kalde funktionen selv, indtil basissagen eller stoptilstanden er nået, og derefter indsamler vi de tidligere værdier:
Inline-funktioner
Funktion i C-programmering bruges til at gemme de mest anvendte instruktioner. Det bruges til at modulere programmet.
Hver gang en funktion kaldes, springer instruktionsmarkøren til funktionsdefinitionen. Efter udførelse af en funktion falder instruktionsmarkøren tilbage til udsagnet, hvorfra den sprang til funktionsdefinitionen.
Hver gang vi bruger funktioner, har vi brug for et ekstra pointerhoved for at springe til funktionsdefinitionen og vende tilbage til udsagnet. For at eliminere behovet for sådanne markørhoveder bruger vi indbyggede funktioner.
I en inline-funktion erstattes et funktionsopkald direkte med en faktisk programkode. Det springer ikke til nogen blok, fordi alle operationer udføres inde i inline-funktionen.
Inline-funktioner bruges mest til små beregninger. De er ikke egnede, når der er tale om store computere.
En inline-funktion svarer til den normale funktion, bortset fra at nøgleordet inline er placeret foran funktionsnavnet. Integrerede funktioner oprettes med følgende syntaks:
inline function_name (){//function definition}
Lad os skrive et program til implementering af en inline-funktion.
inline int add(int a, int b) //inline function declaration{return(a+b);}int main(){int c=add(10,20);printf("Addition:%d\n",c);getch();}
Produktion:
Addition: 30
Ovenstående program viser brugen af en inline-funktion til tilføjelse af to tal. Som vi kan se, har vi kun returneret tilføjelsen på to tal inden for inline-funktionen uden at skrive ekstra linjer. Under funktionsopkald har vi netop videregivet værdier, som vi skal udføre tilføjelse til.
Resumé
- En funktion er et mini-program eller et underprogram.
- Funktioner bruges til at modulere programmet.
- Bibliotek og brugerdefineret er to typer funktioner.
- En funktion består af en erklæring, funktionsdel og en funktionsdel.
- Funktionserklæring og organ er obligatorisk.
- Et funktionsopkald kan være valgfrit i et program.
- C-programmet har mindst en funktion; det er hovedfunktionen ().
- Hver funktion har et navn, datatype for returværdi eller ugyldige parametre.
- Hver funktion skal defineres og erklæres i dit C-program.
- Husk, at almindelige variabler i en C-funktion ødelægges, så snart vi forlader funktionsopkaldet.
- Argumenterne, der sendes til en funktion, ændres ikke, fordi de overføres til værdi ingen efter adresse.
- Det variable omfang kaldes synligheden af variabler i et program
- Der er globale og lokale variabler i C-programmering