函数指针是一个高级的主题,这部分可以跳过或脱脂的只是寻找C++基础。
在指针的教训,你得知一个指针是一个变量,保存另一个变量的地址。函数指针是类似的,除了它指向的变量,它们指向功能!
考虑一个数组的情况:
int nArray[10];
现在你知道了,narray实际上是一个10个元素的数组常量指针。当我们解引用指针(通过narray或narray [索引]),相应的数组元素的返回。
现在考虑以下功能:
就像可以声明一个非恒定指向一个变量,声明一个非恒定指向函数的指针也是可能的。语法这样做是最丑的东西,你会看到:1
2
// pFoo is a pointer to a function that takes no arguments and returns an integer
int (*pFoo) ();
在* pfoo括号是必要的优先的原因,如int * pfoo()将被解释为一个函数名为pfoo,不带参数,并返回一个指向一个整数。
在上面的代码片段中,pfoo是一个指向函数的指针,没有参数,并返回一个整型数。pfoo可以“点”匹配这个签名的任何功能。
一个函数指针分配函数
有两个你可以做一个指向函数的指针主要的东西。首先,你可以指定一个函数,它:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
int foo()
{
}
int goo()
{
}
int main()
{
int (*pFoo)() = foo; // pFoo points to function foo()
pFoo = goo; // pFoo now points to function goo()
return 0;
}