我们知道,函数名就表示函数的地址,C++ primer plus第七章“历史与逻辑”中说函数名是指向该函数的指针,所以指向函数的指针(函数指针)作用方式应该与函数名类似,即不用解引用,直接pf(int)即可调用函数。那么,函数名与函数指针到底有什么区别呢?
看代码。
#include <iostream>
using namespace std;
void fun();
int main()
{
void (*pf) ()= fun;
cout << pf << endl
<< fun << endl
<< *pf << endl
<< *fun << endl;
<< &fun << endl
<< &pf << endl;
return 0;
}
void fun()
{
//do nothing
}
前五个输出全部是函数的首地址,第六个输出是函数指针的存放地址。函数名是一个神奇的东西,函数名是函数地址,它的引用于解引用也是函数地址。我现在还不明白其中的道理,如果有知道的,还望不吝赐教。