指向函数(**ppf)的指针与C中指向函数(*pf)的指针有何不同?

指向函数(**ppf)的指针与C中指向函数(*pf)的指针有何不同?,c,function,pointers,function-pointers,C,Function,Pointers,Function Pointers,我想知道C中的int(**ppf)(int)和int(*pf)(int)之间是否有区别 C有这样一种处理函数指针的方法:函数自动转换为函数指针。这使得程序员能够编写真正精巧的东西 double (*pf)(double) = ***&*&***&*sin; (******&*&*puts)("Hello, world!"); 这真的很奇怪,我看不出它有什么用处 以下是我关于C中函数指针的问题 int(**ppf)(void)的间接寻址级别是否比int(*

我想知道C中的
int(**ppf)(int)
int(*pf)(int)
之间是否有区别

C有这样一种处理函数指针的方法:函数自动转换为函数指针。这使得程序员能够编写真正精巧的东西

double (*pf)(double) = ***&*&***&*sin;
(******&*&*puts)("Hello, world!");
这真的很奇怪,我看不出它有什么用处

以下是我关于C中函数指针的问题

int(**ppf)(void)
的间接寻址级别是否比
int(*pf)(void)
的间接寻址级别更多

是否存在使用
(**ppf)(
优于
(*pf)(
)的情况

它们之间有什么区别吗?


甚至可以在C中获得指向函数指针的指针吗?

是的,
(**ppf)(
(*pf)(
之间存在差异。和指向c中存在的函数的指针

void f();
void (*pf)() = f // or &f
void (**ppf)(e) = &pf;  
以下任何一个函数调用都可以用来调用函数
f

使用
f
f();(&f)();(*f)();(**f)();(***f)()
使用
pf
pf();(*&pf)();(*pf)();(**pf)();(***pf)()

使用
ppf
(*ppf)();(*******ppf)

它们是不同类型的。它们甚至是不同类型的类别;C区分了对象指针和函数指针。任何函数指针都可以分配给任何其他函数指针(不带强制转换),这对于对象指针是不正确的


显然,
pf
是一个函数指针。但是指向函数指针的指针是指向对象的指针,即指向函数指针。

指向int的指针与指向int的指针有何不同?