指向函数(**ppf)的指针与C中指向函数(*pf)的指针有何不同?
我想知道C中的指向函数(**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(*
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的指针有何不同?