#include<iostream>
using namespace std;
//函数指针就是指向函数的指针
/*
* 用途:
函数A要作为实际参数传递给函数B,在B中调用,应该就是回调函数。这时候就要用函数指针。
因为有些功能是流程中的一部分,但是不清楚,需要个性化,只能把公共流程写好,中间穿插个性化内容,
然后这时候把用函数指针存储个性化功能的地址,然后当成参数传递给总流程函数,在里面调用
*/
// 1、要知道函数的类型:
// 函数类型不看函数名和形参名,看返回值类型和参数列表
// 只要返回值类型一样,形参类型和个数一一对应,那就是一类函数,
// 可以用一个函数指针指。
//
// 2、函数指针的形式:
// int (*funptr1)(int,string);
// 由于*号优先级较高,且自右向左结合,没有括号的话会先和int结合,这样就不是函数指针了,
// 是返回值为地址的函数。
//
// 函数指针里面的形参,只要个数和形参类型一样就行,带不带形参变量名 无所谓
// 调用的时候,直接把函数指针名加括号,传上参数就可以了。C语言要在函数指针名字上加(*)
// fun1ptr(12, "asdasd");
//声明一个打铁流程函数,锻造手法是个性化的东西,没法通用 void duanzao1(void) { cout << "三枚钢" << endl; } void duanzao2(void) { cout << "扭转大马士革" << endl; } void duanzao3(void) { cout << "雨滴大马士革" << endl; } void datie(void (*duanzaoptr)(void)) { cout << "准备钢材!" << endl; cout << "准备锤子!" << endl; cout << "开炉烧铁!" << endl; //锻造每人各不相同 duanzaoptr(); cout << "淬火!" << endl; cout << "研磨!" << endl; cout << "测试!" << endl; } int main(void) { //函数名就是地址,可以作为实参直接传递给 形参是 函数指针的 函数 , datie(duanzao2); }
标签:函数,形参,int,类型,函数指针,回调,个性化 From: https://www.cnblogs.com/modianmoz/p/18292177