functions c with types examples
Typer funksjoner i C ++ sammen med bruken.
I våre tidligere veiledninger til nå har vi sett de forskjellige konseptene i C ++ som variabler, lagringsklasser, operatører, matriser, strenger, etc.
I denne opplæringen vil vi gå videre og diskutere funksjonskonseptet. Funksjoner kalles også metoder, underrutiner eller prosedyrer.
=> Les gjennom den omfattende C ++ Training Tutorial Series her.
Hva du vil lære:
- Hvordan definerer vi en funksjon?
- Typer funksjoner i C ++
- Funksjonserklæring
- Funksjonsdefinisjon
- Ringe en funksjon
- Formelle og faktiske parametere
- Returverdier
- Ugyldige funksjoner
- Overføring av parametere til funksjoner
- Standardparametere
- Const-parametere
- Inline-funksjoner
- Bruke strukturer i funksjoner
- Konklusjon
- Anbefalt lesing
Hvordan definerer vi en funksjon?
En funksjon er et sett med utsagn som er satt sammen for å utføre en bestemt oppgave. Det kan være utsagn som utfører noen gjentatte oppgaver eller uttalelser som utfører noen spesialoppgaver som utskrift etc.
En bruk av å ha funksjoner er å forenkle koden ved å dele den inn i mindre enheter som kalles funksjoner. Nok en idé bak bruk av funksjoner er at det sparer oss for å skrive den samme koden igjen og igjen. Vi må bare skrive en funksjon og deretter kalle den når og når det er nødvendig uten å måtte skrive det samme settet med utsagn igjen og igjen.
Typer funksjoner i C ++
I C ++ har vi to typer funksjoner som vist nedenfor.
Innebygde funksjoner
Innebygde funksjoner kalles også biblioteksfunksjoner. Dette er funksjonene som leveres av C ++, og vi trenger ikke å skrive dem selv. Vi kan bruke disse funksjonene direkte i koden vår.
Disse funksjonene er plassert i topptekstfilene til C ++. For eksempel , er overskriftene som har henholdsvis innebygde matematiske funksjoner og strengfunksjoner.
La oss se et eksempel på bruk av innebygde funksjoner i et program.
#include #include using namespace std; int main() { string name; cout << 'Enter the input string:'; getline (std::cin, name); cout << 'String entered: ' << name << '!
'; int size = name.size(); cout<<'Size of string : '< Produksjon:
Skriv inn inndatastrengen: Software Testing Help
Streng angitt: Software Testing Help!
Størrelse på streng: 21
Her bruker vi topptekstene og. Datatypene og andre inngangs- / utgangsfunksjoner er definert i biblioteket. Strengfunksjoner som brukes som getline, størrelse er en del av overskriften.
Brukerdefinerte funksjoner
C ++ lar også brukerne definere sine egne funksjoner. Dette er de brukerdefinerte funksjonene. Vi kan definere funksjonene hvor som helst i programmet, og deretter ringe disse funksjonene fra hvilken som helst del av koden. Akkurat som variabler, bør det deklareres før bruk, funksjoner må også deklareres før de kalles.
La oss diskutere brukerdefinerte funksjoner i detalj.
Den generelle syntaksen for brukerdefinerte funksjoner (eller bare funksjoner) er som angitt nedenfor:
return_type functionName(param1,param2,….param3) { Function body; }
Så som vist ovenfor, har hver funksjon:
- Returtype: Det er verdien at funksjonene går tilbake til anropsfunksjonen etter å ha utført en bestemt oppgave.
- funksjonsnavn : Identifikator som brukes til å navngi en funksjon.
- Parameterliste: Betegnet med param1, param2, ... paramn i syntaksen ovenfor. Dette er argumentene som sendes til funksjonen når en funksjonsanrop foretas. Parameterlisten er valgfri, dvs. vi kan ha funksjoner som ikke har noen parametere.
- Funksjon kropp: En gruppe uttalelser som utfører en bestemt oppgave.
Som allerede nevnt, må vi ‘erklære’ en funksjon før du bruker den.
Funksjonserklæring
En funksjonserklæring forteller kompilatoren om returtypen for funksjonen, antall parametere som brukes av funksjonen og dens datatyper. Inkludert navnene på parametrene i funksjonen, er erklæringen valgfri. Funksjonserklæringen kalles også som en funksjonsprototype.
Vi har gitt noen eksempler på funksjonserklæringen nedenfor for din referanse.
int sum(int, int);
Ovenstående erklæring er av en funksjon ‘sum’ som tar to heltall som parametere og returnerer en heltallsverdi.
void swap(int, int);
Dette betyr at byttefunksjonen tar to parametere av typen int og ikke returnerer noen verdi, og dermed er returtypen ugyldig.
void display();
Funksjonsvisningen tar ingen parametere og returnerer heller ingen type.
Funksjonsdefinisjon
En funksjonsdefinisjon inneholder alt som en funksjonserklæring inneholder, og i tillegg inneholder den også hoveddelen av funksjonen som er innesluttet i parentes ({}).
I tillegg burde den også ha navngitte parametere. Når funksjonen kalles, overføres kontroll av programmet til funksjonsdefinisjonen slik at funksjonskoden kan utføres. Når utførelsen av funksjonen er ferdig, går kontrollen tilbake til punktet der funksjonen ble kalt.
For ovennevnte erklæring om byttefunksjon er definisjonen som gitt nedenfor:
hvordan du skriver ut en matrise i omvendt rekkefølge
void swap(int a, int b){ b = a + b; a = b - a; b = b - a; }
Merk at erklæring og definisjon av en funksjon kan gå sammen. Hvis vi definerer en funksjon før vi henviser til den, er det ikke behov for en egen erklæring.
La oss ta et komplett programmeringseksempel for å demonstrere en funksjon.
#include using namespace std; void swap(int a, int b) { //here a and b are formal parameters b = a + b; a = b - a; b = b - a; cout<<'
After swapping: '; cout<<'a = '< Ringe en funksjon Når vi har en funksjon i programmet vårt, må vi ringe eller påkalle denne funksjonen, avhengig av kravet. Bare når funksjonen blir ringt eller påkalt, vil funksjonen utføre setningssett for å gi de ønskede resultatene.
Funksjonen kan ringes fra hvor som helst i programmet. Det kan kalles fra hovedfunksjonen eller fra en hvilken som helst annen funksjon hvis programmet bruker mer enn en funksjon. Funksjonen som kaller en annen funksjon kalles “Calling-funksjonen”.
I det ovennevnte eksemplet på bytte av tall kalles byttefunksjonen i hovedfunksjonen. Derfor blir hovedfunksjonen kallfunksjonen.
Formelle og faktiske parametere
Vi har allerede sett at vi kan ha parametere for funksjonene. Funksjonsparametrene er gitt i funksjonsdefinisjonen som en parameterliste som følger funksjonsnavnet. Når funksjonen kalles, må vi sende de faktiske verdiene til disse parametrene slik at funksjonen kan utføre oppgaven ved å bruke disse faktiske verdiene.
Parametrene som er definert i funksjonsdefinisjonen kalles Formelle parametere . Parameterne i funksjonsanropet som er de faktiske verdiene kalles Faktiske parametere.
I eksemplet ovenfor med bytte av tall har vi skrevet kommentarene for formelle og faktiske parametere. I anropsfunksjonen, dvs. hoved, blir verdien av to heltall lest og overført til byttefunksjonen. Dette er de faktiske parametrene.
Vi kan se definisjonene av disse parametrene i første linje i funksjonsdefinisjonen. Dette er de formelle parametrene.
Merk at typen formelle og faktiske argumenter skal stemme overens. Rekkefølgen av formelle og faktiske parametere skal også stemme overens.
Returverdier
Når funksjonen har utført den tiltenkte oppgaven, bør den returnere resultatet til anropsfunksjonen. For dette trenger vi returtypen til funksjonen. Funksjonen kan returnere en enkelt verdi til anropsfunksjonen. Funksjonens returtype deklareres sammen med funksjonsprototypen.
La oss ta et eksempel på å legge til to tall for å demonstrere returtypene.
#include using namespace std; int sum(int a, int b){ return (a+b); } int main() { int a, b, result; cout<>a>>b; result = sum(a,b); cout<<'
Sum of the two numbers : '< Produksjon:
Skriv inn de to tallene som skal legges til: 11 11
Summen av de to tallene: 22
I eksemplet ovenfor har vi en funksjonssum som tar to heltallsparametre og returnerer en heltallstype. I hovedfunksjonen leser vi to heltall fra konsollinngangen og sender den til sumfunksjonen. Siden returtypen er et helt tall, har vi en resultatvariabel på LHS og RHS er en funksjonsanrop.
Når en funksjon kjøres, tilordnes uttrykket (a + b) som returneres av funksjonssummen til resultatvariabelen. Dette viser hvordan returverdien til funksjonen brukes.
Ugyldige funksjoner
Vi har sett at den generelle syntaksen for funksjonen krever at en returtype defineres. Men hvis vi har en slik funksjon som ikke gir noen verdi, hva spesifiserer vi i så fall som returtype? Svaret er at vi bruker verdiløs type 'tomrom' for å indikere at funksjonen ikke returnerer en verdi.
I et slikt tilfelle kalles funksjonen ”ugyldig funksjon” og prototypen vil være som
ugyldig funksjonsnavn (param1, param2,… .param 3);
Merk : Det betraktes som en god praksis å inkludere en uttalelse 'retur'. på slutten av tomrumsfunksjonen for klarhet.
Overføring av parametere til funksjoner
Vi har allerede sett begrepet faktiske og formelle parametere. Vi vet også at faktiske parametere overfører verdier til en funksjon som mottas av formatparametrene. Dette kalles overføring av parametere.
I C ++ har vi visse måter å overføre parametere på som beskrevet nedenfor.
Gå forbi verdi
I programmet for å bytte to heltall som vi diskuterte tidligere, har vi sett at vi nettopp har lest heltall ‘a’ og ‘b’ i hovedtrekk og overført dem til byttefunksjonen. Dette er forbipasserende teknikk.
I forbikjøringsteknikk for parameteroverføring blir kopiene av verdiene til faktiske parametere overført til de formelle parametrene. På grunn av dette lagres de faktiske og formelle parametrene på forskjellige minneplasser. Dermed reflekteres ikke endringer som er gjort i formelle parametere i funksjonen utenfor funksjonen.
Vi kan forstå dette bedre ved nok en gang å besøke bytte av to tall.
#include using namespace std; void swap(int a, int b) { //here a and b are formal parameters b = a + b; a = b - a; b = b - a; cout<<'
After swapping inside Swap:
'; cout<<'a = '< Gå forbi referanse Pass by reference er nok en annen teknikk som brukes av C ++ for å overføre parametere til funksjoner. I stedet for å sende kopier av faktiske parametere, sender vi referanser til faktiske parametere.
Merk: Referanser er bare aliaser for variabler eller med enkle ord, det er et annet navn som er gitt til en variabel. Derfor deler en variabel og dens referanse samme minneplassering. Vi vil lære referanser i detalj i vår påfølgende opplæring.
I forbipasserende referanseteknikk bruker vi disse referansene til faktiske parametere, og som et resultat reflekteres endringene som er gjort i formelle parametere i funksjonen tilbake til anropsfunksjonen.
Vi endrer byttefunksjonen slik at leserne våre kan forstå konseptet bedre.
#include #include using namespace std; void swap(int &a, int &b){ int temp = a; a = b; b = temp; } int main() { int a,b; cout<>a>>b; cout<<'a = '< Derfor endringene som er gjort i de formelle parametrene i byttefunksjonen gjenspeiler i hovedfunksjonen, og vi får de bytteverdiene.
Gå forbi Pointer
I C ++ kan vi også sende parametere til å fungere ved hjelp av pekervariabler. Passer teknikken gir de samme resultatene som referanse. Dette betyr at både formelle og faktiske parametere deler de samme minneplasseringene og endringene i funksjonen gjenspeiles i anropsfunksjonen.
Den eneste forskjellen at vi i referanser passerer referanser eller aliaser til parametere, mens vi i en pass by pointer-teknikk bruker pekervariabler for å overføre parametrene.
Pekervariabler skiller seg ut fra referansene der pekervariabler peker på en bestemt variabel, og i motsetning til referanser kan vi endre variabelen som den peker på. Vi vil utforske detaljene til pekeren i våre påfølgende opplæringsprogrammer.
Vi presenterer bytting av to heltall igjen for å demonstrere Pass by Pointer-teknikken.
#include #include using namespace std; void swap(int *a, int *b) { int temp = *a; *a = *b; *b = temp; } int main() { int a,b; cout<>a>>b; cout<<'a = '< Standardparametere I C ++ kan vi gi standardverdier for funksjonsparametere. I dette tilfellet, når vi påkaller funksjonen, spesifiserer vi ikke parametere. I stedet tar funksjonen standardparametrene som er gitt i prototypen.
Følgende eksempel viser bruken av standardparametere.
#include #include using namespace std; int mathoperation(int a, int b = 3, int c = 2){ return ((a*b)/c); } int main() { int a,b,c; cout<>a>>b>>c; cout< Produksjon:
Angi verdier for a, b og c: 10 4 6
Call to mathoperation with 1 arg: 15
Ring til matematikk med 2 arg: 20
Ring til matematikk med 3 arg: 6
Som vist i kodeeksemplet, har vi en funksjon ‘mathoperation’ som tar tre parametere hvorav vi har gitt standardverdier for to parametere. Så i hovedfunksjonen kaller vi denne funksjonen tre ganger med en annen argumentliste.
Den første samtalen er med bare ett argument. I dette tilfellet vil de to andre argumentene ha standardverdier. Neste samtale er med to argumenter. I dette tilfellet vil det tredje argumentet ha en standardverdi. Den tredje samtalen er med tre argumenter. I dette tilfellet, da vi har gitt alle de tre argumentene, vil standardverdiene bli ignorert.
Vær oppmerksom på at mens vi alltid gir standardparametere, starter vi alltid fra den høyeste parameteren. Vi kan heller ikke hoppe over en parameter i mellom og oppgi en standardverdi for neste parameter.
La oss nå gå over til noen spesielle funksjonsrelaterte konsepter som er viktige fra et programmerers synspunkt.
Const-parametere
Vi kan også overføre konstante parametere til funksjoner ved hjelp av ‘const’ nøkkelordet. Når en parameter eller referanse er const, kan den ikke endres inne i funksjonen.
Merk at vi ikke kan overføre en const-parameter til en ikke-const-formell parameter. Men vi kan overføre const og non-const parameter til en const formell parameter.
På samme måte kan vi også ha const return-type. I dette tilfellet kan returtypen ikke endres.
La oss se et kodeeksempel som bruker const-referanser.
#include #include using namespace std; int addition(const int &a, const int &b){ return (a+b); } int main() { int a,b; cout<>a>>b; cout<<'a = '< Produksjon:
Skriv inn de to tallene som skal byttes: 22 33
a = 2 b = 33
Resultat av tillegg: 55
I programmet ovenfor har vi const formelle parametere. Merk at de faktiske parametrene er vanlige ikke-const-variabler som vi har bestått. Siden formelle parametere er const, kan vi ikke endre dem inne i funksjonen. Så vi utfører bare tilleggsoperasjonen og returnerer verdien.
Hvis vi prøver å endre verdiene til a eller b inne i funksjonen, utsteder kompilatoren en feil.
Inline-funksjoner
Vi vet at for å foreta et funksjonsanrop innebærer det internt en kompilator som lagrer tilstanden til programmet på en bunke før den overfører kontrollen til funksjonen.
Når funksjonen kommer tilbake, må kompilatoren hente programtilstanden tilbake og fortsette fra der den gikk. Dette utgjør en overhead. Derfor, i C ++ når vi har en funksjon som består av få utsagn, er det et anlegg som gjør det mulig å utvide inline. Dette gjøres ved å lage en funksjon inline.
Så innebygde funksjoner er funksjonene som utvides ved kjøretid, og sparer innsatsen for å ringe funksjonen og utføre stabelendringene. Men selv om vi gjør en funksjon som innebygd, garanterer ikke kompilatoren at den blir utvidet ved kjøretid. Med andre ord, det er helt avhengig av kompilatoren for å gjøre funksjonen integrert eller ikke.
Noen kompilatorer oppdager mindre funksjoner og utvider dem inline selv om de ikke er erklært inline.
Følgende er et eksempel på en innebygd funksjon.
inline int addition(const int &a,const int &b){ return (a+b); }
Som vist ovenfor går vi forut for funksjonsdefinisjonen med et nøkkelord 'inline' for å gjøre en funksjon inline.
Bruke strukturer i funksjoner
Vi kan sende strukturvariabler som parametere for å fungere på en lignende måte der vi sender vanlige variabler som parametere.
Dette er vist i det følgende eksemplet.
#include #include using namespace std; struct PersonInfo { int age; char name(50); double salary; }; void printStructInfo(PersonInfo p) { cout<<'PersonInfo Structure:'; cout<<'
Age:'< p.age; cout <> p.salary; printStructInfo(p); }
Produksjon:
Skriv inn navn: Vedang
Angi alder: 22
Angi lønn: 45000,00
PersonInfo struktur:
Alder: 22
Navn: Vedang
Lønn: 45000

Som vist i programmet ovenfor, passerer vi en struktur for å fungere på samme måte som andre variabler. Vi leser verdier for strukturelementer fra standardinngangen og sender deretter en struktur til en funksjon som viser strukturen.
Konklusjon
Dette handlet om grunnleggende funksjoner i C ++.
Vi vil utforske mer om de statiske funksjonene i C ++ i våre kommende opplæringsprogrammer.
=> Sjekk Komplett C ++ GRATIS treningsserie her.
Anbefalt lesing
- Python-funksjoner
- Funksjoner for dato og tid i C ++ med eksempler
- Unix Shell Script-funksjoner med parametere og retur
- Python DateTime Tutorial med eksempler
- Viktige LoadRunner-funksjoner som brukes i VuGen-skript med eksempler
- Python-strengfunksjoner
- Python hovedfunksjonsveiledning med praktiske eksempler
- Vennefunksjoner i C ++