destoon 网站后台显示不出模板,什么叫做seo,建设网站我们重中之重-用户体验,如何创办一个网站文章目录 前言变量的声明 一、函数指针二、函数指针数组三、指向函数指针数组的指针四、 回调函数总结 前言
提示#xff1a;本章是指针拔尖系列的终章#xff0c;有四大知识点。 一、函数指针 二、函数指针数组 三、指向函数指针数组的指针 四、回调函数 但学习这些知识点我… 文章目录 前言变量的声明 一、函数指针二、函数指针数组三、指向函数指针数组的指针四、 回调函数总结 前言
提示本章是指针拔尖系列的终章有四大知识点。 一、函数指针 二、函数指针数组 三、指向函数指针数组的指针 四、回调函数 但学习这些知识点我们来回顾一下之前学了什么 之前学了字符指针指针数组数组指针指针传参。 下面知识点学习之前还有补充一个知识点——变量声明
变量的声明
这里就直接下结论这个知识点之后还会单独开一节 变量声明就记住两句话 1.优先级*解引用优先级最低[ ]其次 函数操作符最高 2.看表达式最里面变量靠右边的是什么 举个例子int ( * * a[5] ) ( )——那看a最里面靠右边是什么是a[ ]——那a就是数组 int *p( )——指针函数——函数返回值为指针类型 int( *p)( )——函数指针——指针存函数的地址 一、函数指针 函数指针——是存放函数的指针存放地址的一定是指针函数的地址也不例外 #includeiostream
using namespace std;
void test()
{couthh;
}int main()
{//函数名函数地址cout test endl;cout test endl;
}指针函数和指针数组应用 1.指针函数的应用
动态内存分配指针函数可以用于动态地分配内存并返回指向所分配内存的指针。这种方式使得可以根据运行时的需求动态创建和释放内存
2.指针数组的应用
函数指针数组指针数组可以用来存储一组函数指针。这在需要根据运行时的条件来选择调用不同函数的情况下很有用。通过使用函数指针数组可以在运行时根据条件选择合适的函数进行调用。
二、函数指针数组 用途节省代码避开switch语句的繁杂
利用函数指针数组来建立一个计算器
#includeiostream
using namespace std;
//利用函数指针数组来建立一个计算器
int add(int x,int y)
{return x y;
}int sub(int x,int y)
{return x - y;
}int Mul(int x, int y)
{return x * y;
}int Div(int x, int y)
{return x / y;
}void menu()
{cout --------------------------- endl;cout 1.加法 2.减法 endl;cout 3.乘法 4.除法 endl;cout --------------------------- endl;
}int main()
{int input 0;do{menu();int x0;int y 0;int ret 0;cout 请输入选项;//函数指针数组cin input;int(*pfArr[5])(int, int) { NULL,add,sub,Mul,Div };//函数指针数组——少量的代码写更多事情//pfArr是一个数组数组里面的指针指向函数//如果你用switch语句会很繁杂if (input1input4){cout 请输入两个操作数字;cin x y;ret (pfArr[input])(x, y);//选择操作数cout 结果是 ret endl;}else{cout 选择错误,退出程序 endl;}} while (input);}三、指向函数指针数组的指针 四、 回调函数 四则运算——计算器案例
#includeiostream
using namespace std;
//利用函数指针数组来建立一个计算器
int add(int x,int y)
{return x y;
}int sub(int x,int y)
{return x - y;
}int Mul(int x, int y)
{return x * y;
}int Div(int x, int y)
{return x / y;
}void menu()
{cout --------------------------- endl;cout 1.加法 2.减法 endl;cout 3.乘法 4.除法 endl;cout --------------------------- endl;
}//calc叫回调函数
int calc(int (*pf)(int, int))//函数指针pf指向两个操作数
{int x0; int y0;cout 输出两个操作数;cin x y;return pf(x, y);//用ret接受结果
}int main()
{int input 0;do{menu();int ret 0;cout 请输入选项;//函数指针数组cin input;switch (input){case 1:retcalc(add);cout ret endl;break;case 2:retcalc(sub);cout ret endl;break;case 3:retcalc(Mul);cout ret endl;break;case 4:retcalc(Div);cout ret endl;break;default:cout 选择错误退出程序 endl;break;}} while (input);}B函数操作一切数x,y输入输出掌控全局A函数只是一个躯壳在那里跑任凭调遣。B函数拿到了你的地址可以调用利用函数指针pf调用你 你最后被作为参数调用
参数是函数指针指向另外一个被利用的函数最后在主函数把被利用的函数作为参数调用