Funkciju rādītājs programmā C++

Funkciju rādītājs programmā C++

Priekšnosacījumi:

Rādītāji ir simbolisks adrešu attēlojums. Tie ļauj programmām simulēt zvanu pēc atsauces, kā arī izveidot un manipulēt ar dinamiskām datu struktūrām. Atkārtošana pār elementiem masīvos vai citās datu struktūrās ir viens no galvenajiem norādes lietojumiem.

Tā mainīgā adrese, ar kuru strādājat, tiek piešķirta rādītāja mainīgajam, kas norāda uz to pašu datu tipu (piemēram, int vai virkni).

Sintakse :

datatype *var_name; 

Funkcijas adrese: Mēs visi zinām, ka katras funkcijas kods atrodas atmiņā, tāpēc katrai funkcijai ir adrese, tāpat kā visiem citiem programmas mainīgajiem. Funkcijas nosaukumu var izmantot, lai atrastu funkcijas adresi. Mēs varam iegūt funkcijas adresi, vienkārši ierakstot funkcijas nosaukumu bez iekavām funkcijā.

Lai uzzinātu vairāk par to, skatiet rakstu - funkcijas adrese .

Funkciju rādītājs programmā C++

  • Funkciju rādītājs tiek izmantots, lai norādītu funkcijas, līdzīgi rādītāji tiek izmantoti, lai norādītu mainīgos.
  • To izmanto, lai saglabātu funkcijas adresi.
  • Funkcijas rādītāju izmanto, lai izsauktu funkciju, vai arī to var nosūtīt kā argumentu citai funkcijai.
Funkciju rādītājs programmā C++

Funkciju rādītājs programmā C++

Sintakse :

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

Funkciju rādītāja atsauces un atsauču atcelšana programmā C++

Līdzīgi kā rādītājs, ko izmanto ar mainīgajiem, mēs veicam atsauces un atsauces atcelšanu ar funkcijas rādītāju.

Atsauces: Ja rādītājam ir piešķirta ar to saistītās funkcijas adrese, šo procesu sauc par atsauci.

Atsauces atcelšana: Kad mēs izmantojam (*) operatoru, lai iegūtu rādītājā saglabāto vērtību.

Sintakse:

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

Funkcijas rādītājs, ko izmanto, lai izsauktu funkciju

Šeit mēs redzam, kā mēs norādām rādītāju uz funkciju un izsaucam to, izmantojot šo rādītāju. Tas ir efektīvs lietošanas veids

Piemērs:

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;> }>

Izvade

The value of the product is: 30 

Iepriekš minētajā programmā mēs deklarējam funkciju reizināt, kur mēs reizinām divus elementus a un b, pēc tam atgriežam rezultātu. Bet tā vietā, lai tieši izsauktu funkciju, mēs izmantojam funkcijas rādītāja prod, kas veic to pašu darbu mūsu vietā.

Funkcijas rādītāja nodošana kā parametrs

Deklarējot funkcijas rādītāju, lai saglabātu funkcijas atmiņas adresi, bet, ja mēs vēlamies nodot atgriešanas vērtību nākamajai funkcijai. Mums ir divas metodes, kā veikt šo uzdevumu. Pirmkārt, vai nu nododiet iegūto vērtību, vai otrreiz nododiet jau esošo funkcijas rādītāju.

Piemērs:

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;> }>

Izvade

The value of the product is: 30 

Laika sarežģītība: O(1).
Palīgtelpa: O(1).

Iepriekš minētajā programmā mēs deklarējam reizināšanas funkciju, kurā mēs reizinām 2 mainīgos a un b. Mēs nododam funkcijas rādītāju kā parametru drukāšanas funkcijā. Šeit mēs izmantojam funkcijas rādītāju, lai aprēķinātu vērtību no reizināšanas funkcijas un pēc tam šo vērtību drukas funkcijā.