Когда я просматривал код Linux, я обнаружил следующий фрагмент:
static void __init do_initcalls(void)
{
initcall_t *fn;
for (fn = __early_initcall_end; fn < __initcall_end; fn++)
do_one_initcall(*fn);
}
initcall_t
- указатель на функцию.
Прототип do_initcalls
- int do_one_initcall(initcall_t fn)
.
Так что я думал, что вызов do_initcalls
будет похож на do_one_initcall(fn)
, но я вижу, что это do_one_initcall(*fn)
.Почему это *fn
вместо fn
??