指针函数应用——例8.22 用函数求整数a和b中的大者。(通过函数名调用函数、通过指针变量访问它所指向的函数)
来源:互联网 发布:阿里云cdn怎么配置 编辑:程序博客网 时间:2024/06/05 17:56
解题思路:定义一个函数max,实现求两个整数中的大者。在主函数调用max函数,除了可以通过函数名调用外,还可以通过指向函数的指针变量来实现。分别编程并作比较。
(1)通过函数名调用函数
#include <stdio.h>int main() {int max(int,int); int a,b,c; printf("please enter a and b:"); scanf("%d,%d",&a,&b); c=max(a,b); printf("a=%d\nb=%d\nmax=%d\n",a,b,c); return 0;}int max(int x,int y) {int z; if(x>y) z=x; else z=y; return(z); }
(2)通过指针变量访问它所指向的函数
#include <stdio.h>int main() {int max(int,int); int (*p)(int,int); // 定义指向函数的指针变量p int a,b,c; p=max; // 使p指向max函数。若写成p=max(a,b);则错 printf("please enter a and b:"); scanf("%d,%d",&a,&b); c=(*p)(a,b); // 通过指针变量调用max函数 printf("a=%d\nb=%d\nmax=%d\n",a,b,c); return 0;}int max(int x,int y) // 定义max函数 {int z; if(x>y) z=x; else z=y; return(z); }
8.23 输入两个整数,然后让用户选择1或2,选1时调用max函数,输出二者中的大数,选2时调用min函数,输出二者中的小数。
解题思路:定义两个函数max和min,分别用来求大数和小数。在主函数中根据用户输入的数字1或2,使指针变量指向max函数或min函数。
#include <stdio.h>int main() {int max(int,int); // 函数声明 int min(int x,int y); // 函数声明 int (*p)(int,int); // 定义指向函数的指针变量 int a,b,c,n; printf("please enter a and b:"); scanf("%d,%d",&a,&b); printf("please choose 1 or 2:"); scanf("%d",&n); // 输入1戓2 if (n==1) p=max; // 如输入1,使p指向max函数 else if (n==2) p=min; // 如输入2,使p指向min函数 c=(*p)(a,b); // 调用p指向的函数 printf("a=%d,b=%d\n",a,b); if (n==1) printf("max=%d\n",c); else printf("min=%d\n",c); return 0;}int max(int x,int y) {int z; if(x>y) z=x; else z=y; return(z); }int min(int x,int y) {int z; if(x<y) z=x; else z=y; return(z); }
例8.24 有两个整数a和b,由用户输入1,2或3。如输入1,程序就给出a和b中大者,输入2,就给出a和b中小者,输入3,则求a与b之和。
#include <stdio.h>int main() {int max(int,int); int min(int,int); int add(int,int); void fun(int x,int y, int (*p)(int,int)); int a=34,b=-21,n; printf("please choose 1,2 or 3:"); scanf("%d",&n); if (n==1) fun(a,b,max); else if (n==2) fun(a,b,min); else if (n==3) fun(a,b,add); return 0; }void fun(int x,int y,int (*p)(int,int)) {int resout; resout=(*p)(x,y); printf("%d\n",resout); }int max(int x,int y) {int z; if(x>y)z=x; else z=y; printf("max=" ); return(z); }int min(int x,int y){int z; if(x<y)z=x; else z=y; printf("min="); return(z);}int add(int x,int y){int z; z=x+y; printf("sum="); return(z);}
#include <stdio.h>void main() {int max(int,int); int min(int,int); int add(int,int); int fun(int x,int y, int (*p)(int,int)); int a=34,b=-21,n; printf("please choose 1,2 or 3:"); scanf("%d",&n); if (n==1) fun(a,b,max); else if (n==2) fun(a,b,min); else if (n==3) fun(a,b,add); }int max(int x,int y) {int z; if(x>y)z=x; else z=y; printf("max=%d" ); return(z); }int min(int x,int y){int z; if(x<y)z=x; else z=y; printf("min=%d"); return(z);}int add(int x,int y){int z; z=x+y; printf("sum=%d"); return(z);}int fun(int x,int y,int (*p)(int,int)){int resout; resout=(*p)(x,y); printf("%d\n",resout); }
- 指针函数应用——例8.22 用函数求整数a和b中的大者。(通过函数名调用函数、通过指针变量访问它所指向的函数)
- 通过函数指针调用函数
- 通过函数指针调用函数
- 通过指针调用函数?
- 通过函数名调用函数和通过函数指针调用函数有什么区别呢?为什么调用函数指针没有直接调用函数效率高?
- [C]通过函数指针得到函数名
- 通过函数指针调用static
- 用指向函数的指针变量作函数的参数求两个整数中的最大值、最小值、和
- 通过函数指针动态调用 dll 中的函数
- 通过函数名调用函数
- 通过改变函数的返回值改变它所指向的存储单元
- 为什么可以通过函数指针访问类的私有函数
- [简记]通过函数指针调用函数的不同方法
- js 通过变量名调用函数
- (一) 用函数指针变量调用函数
- 用函数指针变量调用函数
- 通过函数指针使用虚函数表中的函数
- 使用不带圆括号的函数名是访问函数指针,而不是调用函数名
- QT中文字体显示以及字体大小不能改变的问题
- ORA-00054
- win7部署程序到模拟器上出错:无法连接到设备,错误:0x8007064a
- 从零开始学C++之STL(五):非变动性算法源代码分析与使用示例( for_each、min_element 、find_if、search 等)
- 高质量视频学习网站
- 指针函数应用——例8.22 用函数求整数a和b中的大者。(通过函数名调用函数、通过指针变量访问它所指向的函数)
- 免费利器Unity 4.2
- CF328解题报告
- Mediator
- 程序员技术升级攻略
- Android ProgressBar & ProgressDialog 有什么区别呢?
- DIV CSS 网页兼容全搞定
- Redmine backlogs 安装
- thinkphp支持的一些特定变量