ある関数に構造体のポインタを渡して、返り値に構造体のポインタを渡すような関数を身に付けたいです

構造体Qというのを要素数がNNの配列がいくつか入った形で、

typedef struct Vars {
  double U [LL];
  double P [LL];
} VARS;

みたいな定義をする。
で、それをmain分でQとQxとかつくって、QxをQの導関数にして、それを求める関数dQdxを作る。けどそんなことできんのかな。謎。dQdxにはQを、

hoge dQdx (VARS *Q) {
  int i;
  ...
}

とかして与えればいいんだろうけど、そこから先が謎。