#include /* peruslaskutoimitukset */ double plus(double,double); double minus(double,double); double times(double,double); double divided_by(double,double); /* funktio, joka ottaa argumentikseen osoittimen funktioon, joka taas ottaa argumentikseen kaksi reaalilukua ja palauttaa reaaliluvun. huom. funktioillekin varataan muistista jokin tietty osoite, johon ohjelma suunnistaa funktion nimen perusteella */ double compute(double x,double y,double (*op)(double,double)); main() { double x=1.2,y=2.3; /* tässä esimerkissä funktiopointtereiden käyttäminen vain vaikeuttaa tehtävän suorittamista */ printf("%g+%g = %g\n",x,y,compute(x,y,&plus)); printf("%g-%g = %g\n",x,y,compute(x,y,&minus)); printf("%g*%g = %g\n",x,y,compute(x,y,×)); printf("%g/%g = %g\n",x,y,compute(x,y,÷d_by)); } double plus(double a,double b) { return a+b; } double minus(double a,double b) { return a-b; } double times(double a,double b) { return a*b; } double divided_by(double a,double b) { return a/b; } double compute(double x,double y,double (*op)(double,double)) { /* nyt siis kutsutaa sitä funktiota, joka on osoitteessa, johon funktiopointteri op viittaa (ei kirjoiteta esim. (*op)(x,y)) */ return op(x,y); }