Ciao a tutti, ho una domanda probabilmente stupida ma che mi lascia un po' di confusione.
Ho letto che senza capirci molto per passare una funzione (f1) come parametro ad un'altra funzione (f2) bisogna definire una cosa del genere:
Però in un programma ho notato che funziona lo stesso se scrivo una cosa del genere:codice:int f1(int a, int b); int f2(int c, int(*f1)(int a, int b));
Passando direttamente f(z) ad fRT senza preoccuparmi della definizione precedente...codice:#include <stdio.h> #include <stdlib.h> /* METODO DEI TRAPEZI */ double f(double z); double fRT(double z, double IR, int n, double hj, double alpha); int main() { double z=0, alpha=1, hj=0.0001, IR=0; int n; n=(int)(alpha/hj); IR=fRT(z,IR,n,hj,alpha); printf("\n\n\tIR_T FINALE = %lf\n\n", IR); } double f(double z) { return (z); } double fRT(double z, double IR, int n, double hj, double alpha) { int u=0; double f0=f(z); double fn=f(alpha); IR=(hj/2.)*(f0+fn); printf("\n\t\tz\t IR\n"); for (u=1;u<n;u++) { z=z+hj; printf("\t%lf\t%1.20lf\n", z,IR); IR=IR+hj*f(z); } return (IR); }
Sono confusa, è una cosa che si può fare come ho fatto io? Funziona sempre? Qualcuno può darmi delucidazioni?
E chiedo scusa in anticipo se la domanda è idiota..

Rispondi quotando