一、函数  实现某特定功能的代码

1)函数名与数组名一样是地址

2)函数指针 指向函数的指针 可以通过函数指针调用指向的函数

3)返回值类型 (*函数指针名)(参数类型)  = 函数名

int maxValue(int a,int b){return  a > b ? a : b;
}
int (*p)(int,int) = maxvalwe;printf("%d\n",p(3,4));  //用指针去调用函数

4) 示例代码

int maxValue(int a,int b){return  a > b ? a : b;
}
int sumValue(int a,int b){   int sum = a+b;return sum;
}
int main(int argc, const char * argv[]) {int (*p)(int,int) = NULL;int n = 0;scanf("%d",&n);switch (n) {case 1:p = maxValue;break;case 2:p = sumValue;break;default:printf("不在服务区");break;}if (p!=NULL) {printf("%d",p(3,5));}return 0;
}

5)按学生成绩进行升序排列 成绩90以上者 名字后面加高富帅

typedef struct student{char name[20];char gender;int age;float score;
}Student;
void print(char *name){strcat(name, "高富帅");
}
void findvalue(Student *s,int count,void(*p)(char *)){for (int i =0; i<count; i++) {if (s[i].score > 90) {p(s[i].name);}printf("%s %c %d %f\n",s[i].name,s[i].gender,s[i].age,s[i].score);}
}
int main(int argc, const char * argv[]) {Student stu[3] = {{"xiao",'m',23,70},{"ming",'f',24,91},{"zhang",'m',28,95}};Student *s = stu;findvalue(s,3,print);return 0;
}

6)实现函数动态排列

typedef struct student{char name[20];char gender;int age;float score;
}Student;
typedef BOOL(*sortAll)(Student stu1,Student stu2);//定义一个函数指针类型
void sortStudent(Student *s,int count,sortAll al)//函数指针指向函数(sortAge)
{for (int i = 0; i < count-1; i++) {for (int j = 0; j < count-1-i; j++) {//函数回调if (al(s[j],s[j+1])) {Student temp = s[j];s[j]  = s[j+1];s[j+1] = temp;}/*通过函数指针al指向函数(sortAge)*所以s[j],s[j+1]这两个参数也指向函数(sortAge)的形参变量stu1,stu2if(al(s[j]),s[j+1]) 等价于 if(s[j].age > s[j+1].age)*/}}for (int i =0; i<count; i++) {printf("%s %c %d %.2f\n",s[i].name,s[i].gender,s[i].age,s[i].score);}
}
BOOL sortAge(Student stu1,Student stu2)
{return stu1.age > stu2.age;
}
int main(int argc, const char * argv[]) {Student stu[3] = {{"xiao",'m',23,70},{"ming",'f',24,91},{"zhang",'m',28,95}};Student *s = stu;sortStudent(s,3,sortAge);return 0;
}

转载于:https://www.cnblogs.com/ChinaTiger/p/4722244.html

C语言基础_函数指针相关推荐

  1. C语言_函数指针高级用法

    什么是函数指针? 函数是计算机程序中一段可执行代码的封装,当程序运行时函数会被加载到内存布局中的代码段位置,这段代码会有一段内存空间,有内存空间就会有地址,这段内存空间的首地址,就是函数的地址 每当我 ...

  2. c语言函数调用数组_第七讲:C语言基础之函数,第二节,实现汉诺塔

    本文约2200字,主要讲了C语言基础之函数,递归,数组作为函数参数以及案例.练习题等. 带你进入C语言的世界,入门C语言,后边将持续更新.可以收藏学习.想了解C语言基础之函数,函数的基本概述,函数的调 ...

  3. C语言中的函数指针、函数的直接/间接调用、C# 委托(自定义委托、内置泛型委托、委托的实例化、委托的一般使用(模板方法、回调方法)、泛型委托、多播委托、同步/异步使用委托)

    文章目录 C语言中的函数指针 函数的直接调用与间接调用 Java中没有与委托对应的功能实体 C# 委托 C# 自定义委托类型 C# 内置泛型委托类型 委托的实例化 委托也支持泛型的使用 委托的一般使用 ...

  4. fig r函数_R语言基础绘图函数散点图~跟着Nature Communications学画图~Figure1

    今天继续 跟着Nature Communications学画图系列第二篇.学习R语言基础绘图函数画散点图. 对应的 Nature Communications 的论文是 Fecal pollution ...

  5. plot函数_R语言基础绘图函数散点图~跟着Nature Communications学画图~Figure1

    今天继续 跟着Nature Communications学画图系列第二篇.学习R语言基础绘图函数画散点图. 对应的 Nature Communications 的论文是 Fecal pollution ...

  6. 用C语言用指针怎么算通用定积分,C语言:利用函数指针编写一个用矩形法求定积分的通用函数,包括正弦,余弦和指数函数,...

    问题描述: C语言:利用函数指针编写一个用矩形法求定积分的通用函数,包括正弦,余弦和指数函数, //我运行的结果和答案对不上,请帮我看看程序对吗? //实现积分 #include #include i ...

  7. c语言指针指向怎么指,C语言-基础教程-指向指针的指针

    一个指针变量可以指向整型变量.实型变量.字符类型变量,当然也可以指向指针类型变量.当这种指针变量用于指向指针类型变量时,我们称之为指向指针的指针变量,这话可能会感到有些绕口,但你想到一个指针变量的地址 ...

  8. 编写指数函数 c语言,C语言:利用函数指针编写一个用矩形法求定积分的通用函数,包括正弦,余弦和指数函数,...

    问题描述: C语言:利用函数指针编写一个用矩形法求定积分的通用函数,包括正弦,余弦和指数函数, //我运行的结果和答案对不上,请帮我看看程序对吗? //实现积分 #include #include i ...

  9. 木老师教笨笨课堂——系列讲座(从函数指针到委托) 二、C语言里的函数指针...

    二.C语言里的函数指针 上一节里介绍了回调函数,模块A提供了该函数 然后模块A调用B B再返过来调用A提供的函数,再处理最后返回结果给A.晕了.还是画个图.一般调用情况: 图2-1 有回调函数的调用情 ...

最新文章

  1. 转载 - 使用HTML5、CSS3和jQuery增强网站用户体验
  2. python deque的内在实现 本质上就是双向链表所以用于stack、队列非常方便
  3. python项目归纳总结-python总结七
  4. Leetcode记录
  5. nginx的安装与配置
  6. es5如何实现promise_彻底理解Promise对象——用es5语法实现一个自己的Promise(上篇)...
  7. flutter tab选项卡appbar下的选项卡
  8. mysql数据库迁徙_Mysql数据迁徙方法工具解析
  9. 潮流配色+定制音效 OPPO Enco X蓝调版真无线降噪耳机解析
  10. bigdecimal divide四舍五入_BigDecimal 四则运算
  11. (day 07 - dfs or bfs)剑指 Offer 13. 机器人的运动范围
  12. HTML5响应式手机模板:h5手机抽奖游戏活动页面集合模板 HTML+CSS+JavaScript
  13. 语言(文化)代码与国家地区对照表,各国手机号正则
  14. vdbench多主机运行指导
  15. 【小程序-开篇】国内IT技术圈的技能树貌似点歪了?
  16. Windows11怎么配置Maven环境变量
  17. 加州大学欧文分校 计算机专业,加州大学欧文分校排名及各专业排名
  18. 解决npm只能使用管理员权限安装
  19. 抓包工具Fiddler : 启动后无法打开网页_您的连接不是私密连接_隐私设置错误
  20. CSGO社区服搭建记录

热门文章

  1. Android View的加载过程
  2. 系统设计 - 使用面向 iOS 的本机插件扩展
  3. 【iCore组合式双核心开发板教程】【快速使用手册】
  4. python学习第一周(1)
  5. 私有网盘nextcloud 12的问题处理及优化
  6. new Integer 和 Integer.valueOf 有什么不同
  7. Java应用中使用ShutdownHook友好地清理现场(转)
  8. Renascence架构原理——遗传规划算法
  9. Elasticsearch 2.20入门篇:基本操作
  10. 判断string是否为数字