Pentru a înțelege cum funcționează indexul pe funcția, este necesar să se aibă în vedere următoarele. Pe măsură ce funcțiile compilarea codului sursă, înregistrate de regulile limbajului C ++ se transformă într-un obiect și a stabilit punctul de intrare la care este accesat într-un apel de funcție.
Un pointer la o funcție în program este definită după cum urmează:
Tip_funcție (* imya_ pointer) (lista);
float (* PFun) (int);
float * PFun (int);,
compilatorul va accepta ca un prototip funcție numită PFun cu doi parametri întregi, returnează valori de tip float * pointer. Cu alte cuvinte, nu este un indicator de funcție.
Noi definim modul obișnuit de făcut în prima jumătate a anului, o funcție specifică a doi parametri întreg care returnează o valoare reală. De exemplu, ca o astfel de funcție poate fi o funcție care returnează valoarea medie a două numere întregi:
float Aver (int x, int y)
Apoi a declarat mai sus PFun pointer la o funcție poate fi determinată cu următoarea alocare:
float Res; Res = (* PFun) (5, 2);
float * PFun (int) = Aver;
Ca un indicator specific de utilizare practică a unei funcții, luați în considerare exemplul următor.
EXEMPLUL 1 (+) Crearea funcției pe care Simpson formulă calculează valoarea integrala definită a unei funcții arbitrare a unei variabile. Verificarea funcțională pentru calculul integralelor două:
Funcția Integral pentru a calcula integrala definită a unei funcții arbitrare în formula Simpson are următorii parametri: integrarea limitele a și b; numărul de pixeli în care intervalul [a, b], kotoroeobyavleno tip float, pentru a exclude algoritmul de implementare tip de conversie; un pointer la o funcție la care se calculează integrala definită.
float Integral (float, float, float, float (* Fun) (float));
// Două funcții de testare pentru care se calculează integrala.
// Se calculează prima integrală.
a = -1; b = 1; n = 100; I = Integral (a, b, n, Function1); cout<
// calcula a doua integrală.
a = 0; b = 1; n = 100; I = Integral (a, b, n, Function2); cout< Citește anula (int x) nule Append (int x) Exemplul 2. (+) Un tablou dinamic de pointeri la funcții. Pentru x = 0, 0,2, ..., 1 deduce un tabel de valori a trei funcții. // Texte ale celor două funcții. A treia funcție - cos standard, (x). MyExp dublu (double x) double Myq (double x) / * Declararea și de a crea o serie de indicii pentru funcții cu o singură opțiune reală. * / double (* (* fun)) (dublu) = nou (dublu (* [n]) (dublă)); // atribuie elemente pentru a crea o serie de nume de funcții. // Buclă pentru a schimba x pentru (float x = 0; x<1; x+=0.2) / * Buclă pentru valorile de ieșire ale tuturor funcțiilor pentru o valoare fixă de x. * / printf ( "% 20.6f", fun [j] (x));articole similare