在分配函数指针时,这两个符号之间有什么区别?

时间:2016-03-23 19:47:11

标签: c++ function-pointers

考虑下面的代码,它声明一个函数指针,并将其指向一个函数。

void MyIntFunction( int x ){
    std::cout << x << '\n';
}

void ( *funcPtr )( int ) = MyIntFunction;
void ( *funcRef )( int ) = &MyIntFunction;


(*funcPtr)( 2 );
(*funcRef)( 2 );

这个代码在我的Xcode中运行良好,问题是,在分配函数指针时,MyIntFunction&MyIntFunction之间有什么区别

1 个答案:

答案 0 :(得分:3)

正式MyIntFunction是函数类型,&MyIntFunction是指向函数的指针。但是,函数类型在几乎所有上下文中都衰减到指针到函数类型,因此在此上下文中使用MyIntFunction&MyIntFunction之间没有真正的区别。

请注意,发布的代码中的任何位置都没有引用funcPtrfuncRef都是指向函数的指针。