Di salah satu file sumber proyek saya, saya menemukan definisi fungsi C ini:
int (foo) (int *bar)
{
return foo (bar);
}
Catatan: tidak ada tanda bintang di sebelahnya foo
, jadi itu bukan penunjuk fungsi. Atau itu? Apa yang terjadi di sini dengan panggilan rekursif?
a(b);
? Deklarasi b
sebagai variabel tipe a
? Atau panggilan untuk berfungsi a
dengan argumen b
? Perbedaannya adalah sintaksis, dan Anda tidak dapat mengetahui cara untuk menguraikannya tanpa melihat info deklarasi a
; yaitu tanda kurung fungsi postfix, atau tanda kurung opsional di sekitar deklarator.