函数类型的语法基础:
函数指针用于指向一个函数, 函数名是函数体的入口地址
1)可通过函数类型定义函数指针: FuncType* a;
2)也可以直接定义:type (*a)(parameter list);
a为函数指针变量名
type为指向函数的返回值类型 parameter list为指向函数的参数类型列表
#include<iostream>
using namespace std;
typedef void(func)(int);//定义一个函数类型
void test(int a) //定义一个函数
{
cout <<" A= "<< a*a << endl;
}
void test1(int b)//定义一个函数
{
cout << " B= " <<b*b<< endl;
}
void main()
{
func* F = NULL;//定义一个指向函数的类型FUNC的空指针F
F = test;//指向test函数
F(10);//通过函数指针F,间接调用test
void(*F1)(int) = &test1; //直接定义一个函数指针F1指向test1
F1(5);//通过函数指针间接调⽤用
}
函数指针做函数参数:
当函数指针 做为函数的参数,传递给一个被调用函数,被调用函数就可以通过这个指针调用外部的函数,这就形成了回调。
#include<iostream>
using namespace std;
int test(int a, int b)
{
cout << " a * b= " << a*b << endl;
return 0;
}
int test2(int(*P)(int a, int b))
{
int a, b;
a = 5;
b = 5;
test(1, 2);//调用了test函数
cout << P(a, b) << endl;//通过函数指针做函数参数,间接调用add函数
return 0;
}
void main()
{
int(*P1)(int a, int b);//定义一个函数指针P1指向int()(int, int)函数类型
P1 = test;
test2(P1);
}
优点:1、函数的调用和函数的实现有效的分离
2、类似C++的多态,可扩展