//函数指针
//与整形指针(指向整形变量的指针) 类似,指向函数的指针乘坐函数指针.
//对于指针来说,最重要的亮点:首地址 以及 所取字节数.
//int *p=&a; 首地址是&a,取4个字节.
//Student *q=&stu1; 首地址是&stu1,取sizeof(Student)这么多字节
//取多少字节 是由 指针所指向的变量类型所决定的.
//想要弄懂函数指针,需要清楚亮点内容:1,函数名 代表函数 首地址.2,如何确定函数类型.
//函数指针 是指向函数的指针.在定义函数指针的时候,要清楚自己要指向什么类型的函数.如果我们要定义一个函数指针,指向一个 具有两个整形参数,一个整形返回值的函数.(例如sum函数),使用以下代码定义函数指针
//int sum(int x,int y)
// int (*p)(int x,int y)=sum;//别忘引入头文件
//
//
// //类型 变量=值
// //类型 int (*)(int x,int y) //指向两个整型参数一个整型返回值的指针类型
// //变量 p
// //值 sum
//
// p=divide;//p只能指向 具有两个整型参数,一个整型返回值的函数.
//
// printf("%d %d",sum(10, 20),p(10,20));//p可以直接当函数使用
// void (*p)()=printHello;
//
// p();//函数调用的语法 函数名(参数)
//练习2:
// int (*temp)(int x,int y)=NULL;
// char a[]={0};
// printf("请输入函数名:\n");
// scanf("%s",a);
//
// if (strcmp("max", a)==0) {
// temp=max;
// }else if (strcmp("sum", a)==0){
// temp=sum;
// }
// printf("%d ",temp(3,5));
// printf("%d\n",getValue(10, 8, sum));
// printf("%d\n",getValue(10, 8, minus));
// printf("%d\n",getValue(10, 8, max));
// printf("%d\n",getValue(10, 8, mul));
// 练习3:写⼀函数查找成绩90分以上的学员,使⽤回调函数在姓名后加”⾼富
// 帅”。
Student stu[5]={
{"john",12,23,89},
{"andy",15,25,72},
{"john",12,23,89},
{"john",12,23,89},
{"john",12,23,89}
};
sortByScore(stu, 5, cmpScore);
printStudent(stu, 5);
// 《第十一讲:函数指针》
// 课后题:
// 1.(***)随机生成一个 10 个元素的数组,找到 3 的倍数,并将其值修改成
// 0.(注意:修改数值使用回掉函数处理)
// 2. (***)有两个 10 个元素的数组,分别为 A 和 B,编程实现相同位置的元素,
// 如果 B 的元素小于 A 的元素进行数值交换:(使用回调函数实现)