C++复习之函数指针

函数指针

/* test01-函数指针和回调函数复习 
   1. 声明普通指针时,必须提供指针的类型。
      同样,声明函数指针时,也必须提供函数类型,
      函数的类型是指返回值和参数列表(函数名和形参名不是)
   2. C++中,函数名就是函数的地址 
   
   test02-回调函数的使用场景总结:
   1. 用函数指针回调函数和用函数名调用函数的意义不同 
   2. 回调函数是把一个函数的代码嵌入到另一个函数中 
      调用者函数提供了主体的流程和框架,具体功能由回调函数完成 
   3. 在写回调函数时只关心种类,不关心具体功能 
   
   test03-如何给回调函数传递参数?
   1. 一种是有调用者提供实参
   2. 另一种把实参从外面传进去 
*/

//test01-初识函数指针 
#include <iostream>
using namespace std;

void func(int no,string str)
{
	cout<<"小小的"<<no<<"号:"<<str<<endl;
}
int main() 
{
	int bh=3;
	string message="我是一只小草龟。";
	
	func(bh,message);  
	
	void(*pfunc)(int,string);  //声明表白函数的函数指针
	pfunc=func;  //对函数指针赋值,语法:函数指针名=函数名 
	pfunc(bh,message);  //C++写法 用函数指针名来调用函数,语法是:函数指针名(实参)
    (*pfunc)(bh,message);  //C语言写法 用函数指针名来调用函数
}

#endif


//test02-函数指针的作用 
#if 0
#include <iostream>
using namespace std;

void zs()  //张三的个性化表白函数   //返回值和参数类型一定相同 
{
    cout<<"翻三个跟斗。\n";  //个性化表白的代码	
} 

void ls()  //李四的个性化表白函数   //返回值和参数类型一定相同 
{
    cout<<"我由一只小草龟。\n";  //个性化表白的代码	
} 

//在表白神器里面,用函数指针就可以调用个性化表白函数。 
//这种调用就叫函数的回调。 (个性化表白函数就是回调函数)
void show(void(*pf)())
{
	cout<<"表白之前工作已完成。\n";  //表白之前准备工作
	
	pf();  //个性化表白函数指针p();
	
	cout<<"表白之后工作已完成。\n";  //表白之后的收尾工作 
 } 

int main()
{
	//show(zs);  //把张三的函数名作为参数传递给表白神器函数 
	show(ls); 
	cout<<"hhhhhh"<<endl; 
}

#endif


//test03-给回调函数传递参数
#if 0
#include <iostream>
using namespace std;

//给回调函数增加一个形参 
void zs(int a)  
{
    cout<<"a="<< a <<"翻三个跟斗。\n";  //个性化表白的代码	
} 

void ls(int a)  
{
    cout<<"a="<< a <<"我是一只小草龟。\n";  //个性化表白的代码	
} 

//在表白神器里面,用函数指针就可以调用个性化表白函数。 
//这种调用就叫函数的回调。 (个性化表白函数就是回调函数)
//void show(void(*pf)(int)) //1) 由调用者提供实参(写数据类型就可以了) 
void show(void(*pf)(int),int b) //2) 把实参从外面传进去 
{
	cout<<"表白之前工作已完成。\n";  //表白之前准备工作
	//int b=3; //1)
	pf(b);  //1) 用函数指针调用回调函数时,把实参传入回调函数 
	
	cout<<"表白之后工作已完成。\n";  //表白之后的收尾工作 
 } 

int main()
{
	//show(zs);  //把张三的函数名作为参数传递给表白神器函数 
	//show(ls);   //1)
	show(ls,3);   //2)
	show(zs,4);   //2)
	cout<<"hhhhhh"<<endl; 
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值