In pratica
codice:
void interseca(ricetta*, char[], char[], int);
è equivalente a
codice:
void interseca(ricetta[],char[],char[],int);
..provare per credere...
Per poter passare a una funzione un array si può passare il puntatore al suo primo indirizzo.

Ti invito a leggere Qua,in particolare versò metà pagina, ma sul web si trovano tante guide sulla "analogia tra puntatori e array"