函数指针是指向函数而非指向对象的指针,像其他指针一样,函数指针也是指向某个特定的类型,函数类型由其返回类型和形参表确定,与函数名无关。
void (*func)(int);
该语句将func声明为指向函数的指针,它指向的函数带有一个int类型的形参,没有返回值。
函数指针只能通过同类型的函数或函数指针或0值常量表达式进行初始化或赋值。
初始化为0表示指针不指向任何函数。
#include <iostream>
using namespace std;
//func表示一个指向函数的指针类型的名字,指针类型为“指向没有返回值,带有一个int类型的参数的函数的指针”
typedef void (*func)(int);
void func1(int a)
{
cout<<"func1:"<<a<<endl;
}
int main()
{
//void (*f)(int);
//通过指针调用函数
//f=func1;
//这里f和(*f)的效果一样
//f(3);
//(*f)(3);
//声明了一个指向函数的指针f
func f1,f2;
//直接引用函数名等效于在函数名上应用取地址符
f1=func1;
f2=&func1;
f1(3);
f2(2);
}