Funksjonspeker i C++

Funksjonspeker i C++

Forutsetninger:

Pekere er symbolske representasjoner av adresser. De gjør det mulig for programmer å simulere samtale-for-referanse samt å lage og manipulere dynamiske datastrukturer. Iterering over elementer i arrays eller andre datastrukturer er en av hovedbruken av pekere.

Adressen til variabelen du jobber med er tilordnet pekervariabelen som peker til samme datatype (som en int eller streng).

Syntaks :

datatype *var_name; 

Funksjonsadresse: Vi vet alle at hver funksjons kode ligger i minnet, så hver funksjon har en adresse som alle andre variabler i programmet. Navnet på en funksjon kan brukes til å finne adressen til funksjonen. Vi kan få adressen til en funksjon ved å bare skrive funksjonens navn uten parentes i funksjonen.

For å vite mer om dette, se artikkelen – adresse til funksjonen .

Funksjonspeker i C++

  • Funksjonspekeren brukes til å peke funksjoner, på samme måte brukes pekerne til å peke variabler.
  • Den brukes til å lagre en funksjons adresse.
  • Funksjonspekeren brukes enten til å kalle funksjonen eller den kan sendes som et argument til en annen funksjon.
Funksjonspeker i C++

Funksjonspeker i C++

Syntaks :

return_type (*FuncPtr) (parameter type, ....); 

Referering og frareferanse av funksjonspekeren i C++

I likhet med pekeren som brukes med variabler, utfører vi referanse og dereferering med en funksjonspeker.

Refererer til: Når pekeren tildeles adressen til funksjonen som skal knyttes til den, blir denne prosessen referert til som referanse.

Frareferanse: Når vi bruker (*)-operatoren for å få verdien lagret i pekeren.

Syntaks:

// Declaring return_type (*FuncPtr) (parameter type, ....); // Referencing FuncPtr= function_name; // Dereferencing data_type x=*FuncPtr; 

Funksjonspeker som brukes til å kalle funksjonen

I dette ser vi hvordan vi peker en peker til en funksjon og kaller den ved hjelp av den pekeren. Det er en effektiv måte å bruke

Eksempel:

C++




// C++ program to implementation> // Function Pointer> #include> using> namespace> std;> int> multiply(> int> a,> int> b) {> return> a * b; }> int> main()> {> > int> (*func)(> int> ,> int> );> > // func is pointing to the multiplyTwoValues function> > func = multiply;> > int> prod = func(15, 2);> > cout < <> 'The value of the product is: '> < < prod < < endl;> > return> 0;> }>

Produksjon

The value of the product is: 30 

I programmet ovenfor erklærer vi en funksjon multipliser der vi multipliserer to elementer a og b, og returnerer deretter resultatet. Men i stedet for å kalle funksjonen direkte, bruker vi en funksjonspekerprod som gjør det samme arbeidet for oss.

Sende en funksjonspeker som en parameter

Når vi erklærer en funksjonspeker for å lagre minneadressen til funksjonen, men når vi ønsker å sende returverdien til neste funksjon. Vi har to metoder for å utføre denne oppgaven. Først må du enten sende verdien vi fikk eller deretter sende funksjonspekeren som allerede eksisterer.

Eksempel:

C++




// C++ Program for demonstrating> // function pointer as pointer> #include> using> namespace> std;> const> int> a = 15;> const> int> b = 2;> // Function for Multiplication> int> multiply() {> return> a * b; }> // Function containing function pointer> // as parameter> void> print(> int> (*funcptr)())> {> > cout < <> 'The value of the product is: '> < < funcptr()> > < < endl;> }> // Driver Function> int> main()> {> > print(multiply);> > return> 0;> }>

Produksjon

The value of the product is: 30 

Tidskompleksitet: O(1).
Ekstra plass: O(1).

I programmet ovenfor erklærer vi en multiplisasjonsfunksjon der vi multipliserer 2 variabler a og b. Vi sender funksjonspekeren som en parameter i utskriftsfunksjonen, her bruker vi funksjonspekeren til å beregne verdien fra multipliser funksjonen og deretter verdien i utskriftsfunksjonen.