Innanzitutto vi ringrazio delle risposte! Quindi sarebbe la stessa cosa se invece di utilizzare la funzione io inserissi direttamente nella main

codice:
int main(void){

....

 static struct phaseSpace xAndVNew;

 xAndVNew.v = (*pXAndVOld).v +  forceHarmonicOscillator(omega2, (*pXAndVOld).x) * dt;

 xAndVNew.x = pXAndVOld->x + pXAndVOld->v * dt;

....

}
Altri due piccoli chiarimenti:

Se scrivessi:

struct phaseSpace euler(double m_dt, double m_omega2, struct phaseSpace *m_pXAndV);

cioè senza l'asterisco non sarebbe sempre "una funzione di nome "euler" che ritorna come tipo un puntatore a un struttura di tipo "phaseSpace". Cioè quando dichiaro una funzione, e voglio che quella funzione ritorni la locazione di un puntatore, devo specificare l'asterisco davanti al nome della funzione?

************************************************** **************

Ultima cosa: il termine "static" in questo caso va davanti a struct perchè dopo l'uscita della funzione si vuole che venga trovata da altri programmi giusto? Quindi, se inserissi la dichiarazione prima della main non ci sarebbe bisogno del termine "static" ?