C语言程序设计基础教程 7.11、使用指针调用函数

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
p=max; printf("请输入三个整数:"); scanf("%d%d%d",&x,&y,&z); printf("三个数中最大的是:%d\n",(*p)(x,y,z)) ; } //通过*p调用max函数
C语言程序设计—使用指针调用函数
C语言
本次任务
输入10个整数。接下来由用户选择 输入0或者1。如果输入0,则将这 组数字逆序输出;如果用户输入1, 则正序输出
int (*p)(int,int,int); //声明一个指向函数的指针
p=max; //将指针p指向函数max printf("请输入三个整数:"); scanf("%d%d%d",&x,&y,&z); printf("三个数中最大的是:%d\n",(*p)(x,y,z)) ; } //通过*p调用max函数
说 明1:将一个函数指针指向一个函数, 只需要将函数名赋值给该指针,不需要 传递参数。
说 明2:使用函数指针调用函数时,只
需使用(*p)代替函数名即可,如果函 数带有参数,则必须携带实参才可以调
用。
说 明3:指向函数的指针,是不可以进 行加减等运算的,因为没有意义。
//将指针p指向函数max
int (*p)(int,int,int); //声明一个指向函数的指针
C语言程序设计—使用指针调用函数
C语言
任源自文库实现
输入“1 3 5 7 9 2 4 6 8 10”,选择0。 输入“1 3 5 7 9 2 4 6 8 10”,选择1
C语言程序设计—使用指针调用函数
C语言
任务分析与总结
#include "stdio.h" int max(int a,int b,int c) { int max_int=a; if(max_int<b) max_int=b; if(max_int<c) max_int=c; return max_int; } void main() { int x,y,z; //主函数 //预处理 //定义max函数,找出a,b,c三者的最大值
C语言程序设计—使用指针调用函数
C语言
任务实现
#include "stdio.h" int max(int a,int b,int c) { int max_int=a; if(max_int<b) max_int=b; if(max_int<c) max_int=c; return max_int; } void main() { int x,y,z; //主函数 //预处理 //定义max函数,找出a,b,c三者的最大值
使用指针调用函数
C语言程序设计
C语言程序设计—使用指针调用函数
C语言
本次任务
输入三个数,计算三个数中
的最大值。
C语言程序设计—使用指针调用函数
C语言
函数指针
一个函数在程序编译的时候会被分配一段存储空间,函数名代表空间的起始地址, 被称为该函数的指针。我们也可以定义一个指针变量来指向函数,然后通过该指 针变量来调用此函数,这种指针就叫做函数指针。
定义函数指针的语法是: 类型名 (*指针变量名)(函数参数表列); 例 如: int (*p)(int,int); 说 明:声明了一个指向函数的指针p,函数的返回值类型为整型,带有两个整型的形参。也就是 说,函数指针并不是随意指向任何一个函数,函数的类型必须与函数指针的定义相一致。与指针 做函数返回值的函数声明有区别,因为优先级的关系,“*指针变量名”必须使用圆括号括起来。
C语言程序设计—使用指针调用函数
C语言
任务实现
#include "stdio.h" void sort_po(int *a) //10元素数组正排序函数 { int temp,*i,*j; for(i=a;i<a+10-1;i++) for(j=i+1;j<a+10;j++) { if(*i>*j) { temp=*i; *i=*j; *j=temp; } } } void sort_in(int *a) //10元素数组逆排序函数 { int temp,*i,*j; for(i=a;i<a+10-1;i++) for(j=i+1;j<a+10;j++) { if(*i<*j) { temp=*i; *i=*j; *j=temp; } } } void main() //主函数 { int x[10]; int i,m; void (*p)(int *); printf("请输入10个整数:\n"); for(i=0;i<10;i++) //数组初始化 scanf("%d",&x[i]); printf("请选择输出方式,0为逆序,1为正序:\n"); scanf("%d",&m); if(m==0) p=sort_in; if(m==1) p=sort_po; (*p)(x); //调用p指向的函数,携带整型指针实参x for(i=0;i<10;i++) printf("%d ",x[i]); }
相关文档
最新文档