函数指针基础

函数指针

函数名是执行函数体的入口地,函数名本身就是一个指针。函数指针是指向函数的指针,通过函数指针(函数的入口地址)就可以执行函数体。

对函数名取多少地址(&)都一样,以及取多少个*操作都一样还是其本身,这是一种语法现象。

可以用typedef定义一个函数类型,也可以定义一个指针函数类型的指针类型,亦可以直接定义一个函数指针。

看下面的例子:

#include<iostream>
using namespace std;

int func_test(int a,int b)
{
	return a+b;
}

typedef int (*pFunc)(int,int);//定义指针函数类型
typedef int Func(int,int);//定义函数类型
int main()
{
	int i_a, i_b, i_c;
	Func *p_func1;//使用函数类型定义函数指针好比使用int 定义int *p;
	pFunc p_func2; //指针函数类型定义一个函数指针
	int (*p_func3)(int ,int);/* 直接定义一个函数指针 int 是返回值类型p_func3是函数指针名称,
							 (int,int)是函数的参数,这里也可以加参数名(int a,int b) */

	p_func1 = func_test;
	p_func2 = &func_test;//对函数名取多少地址都一样 这是一种语法现象
	p_func3 = func_test;

	i_b = p_func1(1,3);//通过指向函数类型的指针去调用函数
	i_a = p_func2(1,3);
	i_c = p_func3(1,3);

	cout<<"i_a:"<<i_a<<"i_b:"<<i_b<<"i_c:"<<i_c<<endl;
	system("pause");
	return 0;
}

函数指针作用:

1.正向调用(加载动态库)

2.反向调用(回调)

回调函数是利用函数指针实现的一种调用机制

回调机制原理

         当具体事件发生时,调用者通过函数指针调用具体函数

         回调机制的将调用者和被调函数分开,两者互不依赖。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值