指向C ++中函数的指针

理查德·g

很难为我的问题命名一个标题,所以请原谅我这个模棱两可的标题。

函数名称被视为函数的地址,因此我们可以将它们分配给函数指针。

...
void fun(){cout<<"fun called";}  
int main()
{
typedef void (*pf)();
pf p1 = fun;
//Then we can call p1()
p1();
...
}

这没问题。让我感到困惑的是,pf p2 = &fun; p2();它将做与p1完全相同的事情,而不会发出警告或错误。

“ fun”是函数的地址,所以&fun不应该是该函数的地址的地址吗?我认为,当我将&fun分配给p2时,应该存在类型不一致的情况。为什么pf p2 = &fun要进行法律转让?

529

函数名称被视为函数的地址

“ fun”是函数的地址

这些陈述都不正确。函数名称不是指针,而是函数指示符。在某些情况下(例如,当分配给指针类型为-的对象时),它类似于数组在隐式转换为指针(“衰减为指针”)的情况(并非数组全部)函数或调用时。

当函数是一元(地址)运算符的参数时,不会发生这种隐式转换&,因此&function_name将是“函数指针”而不是“函数指针”。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

指向C ++中的函数指针的指针

来自分类Dev

指向C中内置函数的函数指针

来自分类Dev

Typedef指向C ++中C函数的指针

来自分类Dev

指向C#中的函数的指针

来自分类Dev

从C ++中的函数返回指向数组的指针?

来自分类Dev

在C函数中传递指向数组的指针

来自分类Dev

从C ++中的函数返回指向数组的指针?

来自分类Dev

指向C ++中的指针的指针

来自分类Dev

指向指针的c ++指针和接收指向指针的调用函数

来自分类Dev

指向Swift函数中的指针参数的指针

来自分类Dev

在C程序中获取指向C ++函数库的指针

来自分类Dev

您可以从C中当前指向的函数中更改指向函数的指针吗?

来自分类Dev

如何加快在C ++中返回指向对象的指针的函数?

来自分类Dev

C ++-使指向超类的指针与函数中的子类参数匹配

来自分类Dev

如何在C#中创建“指向函数指针的typedef”?

来自分类Dev

无法“指向” C中传递的函数指针数组

来自分类Dev

函数返回指向C中数组类型的指针

来自分类Dev

在构造函数C ++中传递指向self的指针

来自分类Dev

在C程序中定义指向函数的指针变量

来自分类Dev

指向C ++中未定义函数和参数的指针

来自分类Dev

C ++-使指向超类的指针与函数中的子类参数匹配

来自分类Dev

指向结构中数组的C指针传递给函数

来自分类Dev

指向C中数组的指针

来自分类Dev

指向C中结构的指针

来自分类Dev

指向C中的struct的指针

来自分类Dev

指向C中参数的指针

来自分类Dev

指向C中整数的指针

来自分类Dev

指向C ++中成员的指针

来自分类Dev

指向C中参数的指针