void func(int a[]);

funcの定義内で、引数 a を使う場合、a[i] などと書きます。

void func2(void (*g)(void));

func2の定義内で、引数 g を使う場合、g() だけでなく (*g)() とも書くことができるそうです。

配列と関数の場合で整合性がとれていないように思います。