logo
ООП для Заоч / Пинчук Лозовская Программир на С

Int (*pf[3])(float X, float y);

// pf - ім’я масиву покажчиків на функцію

int f0(float x, float y)

// об’ява функції відповідного типу

{ return x+y;

}

int f1(float x, float y)

{ return x-y;

}

int f2(float x, float y)

{ return x*y;

}

void main()

{ pf[0]=f0; pf[1]=f1; pf[2]=f2;

// ініціалізація масиву покажчиків

for (int i=0;i<3;i++)

printf("f[i](x)=%d \n",pf[i](2.8,2.8)); // виклик

} // функцій

Гарним прикладом використання покажчика на функцію є побудова функції для обчислення інтегралу по формулі Симпсона, при умові, що підінтегральну функцію потрібно передавати як параметр.

// Приклад 2

typedef double (*fun)(double);

// оголошується синонім типу для покажчика на функцію

double F(double x) // підінтегральна функція F(x)

{ return ln(x);

}

double G(double x) // підінтегральна функція G(x)

{ return sqr(sin(x));

}

double simp(fun f, double a, double b, int N)

// функція обчислення інтегралу

{ double x, h=(b-a)/N, S=0;

for (int i=1;i<N;i+=2) { x=a+i*h;

S+= 4*f(x)+2*f(x+h);

}

S+= f(a)-f(b);

return S*h/3;

}