ragazzi ho trovato quest'altro codice, che mi sembra un pò più intuitivo:
#include<stdio.h>
#include<math.h>
#include<stdlib.h>


float f(float x)
{


return <mia funzione>;
}






void main()
{
float y = //punto in cui voglio calcolare la derivata;


float h = 0.00001 ;// valori più piccoli di h danno una maggiore precisione


printf("la derivata nel punto %f è %f \n", y , (f(y+h)-f(y))/h);


}

però a volte funziona ed a volte no , infatti la maggior parte delle volte mi restituisce come risultato 0