C语言程序设计 (29).docx
课题
第8章善于利用指针
课时
2
教学目的
与
要求
8.5指向函数的指针
教学重点
与
难点
指向函数的指针
教
学
过
程
主要内容及步骤
备注
导入新课
新课讲授
第8章善于利用指针
8.5指向函数的指针
课堂小结
布置作业
授课效果分析总结
教案
课程名称:C语言程序设计授课人:***
8.5指向函数的指针
8.5.1什么是函数指针
可以定义一个指向函数的指针变量,用来存放某一函数的起始地址,这就意味着此指针变量指向该函数。例如:
int(*p)(int,int);
定义p是指向函数的指针变量,它可以指向类型为整型且有两个整型参数的函数。p的类型用int(*)(int,int)表示
8.5.2用函数指针变量调用函数
例8.22用函数求整数a和b中的大者。
(1)通过函数名调用函数
#includestdio.h
intmain()
{intmax(int,int);
inta,b,c;
printf(pleaseenteraandb:);
scanf(%d,%d,a,b);
c=max(a,b);
printf(“%d,%d,max=%d\n,a,b,c);
return0;
}
intmax(intx,inty)
{intz;
if(xy)z=x;
elsez=y;
return(z);
}
(2)通过指针变量访问它所指向的函数
#includestdio.h
intmain()
{intmax(int,int);
int(*p)(int,int);inta,b,c;
p=max;
printf(pleaseenteraandb:);
scanf(%d,%d,a,b);
c=(*p)(a,b);
printf(“%d,%d,max=%d\n,a,b,c);
return0;
}
8.5.3怎样定义和使用指向函数的指针变量
定义指向函数的指针变量的一般形式为
数据类型(*指针变量名)(函数参数表列);
如int(*p)(int,int);
p=max;对
p=max(a,b);错
p+n,p++,p--等运算无意义
8.5.4用指向函数的指针作函数参数
指向函数的指针变量的一个重要用途是把函数的地址作为参数传递到其他函数
指向函数的指针可以作为函数参数,把函数的入口地址传递给形参,这样就能够在被调用的函数中使用实参函数
例8.24有两个整数a和b,由用户输入1,2或3。如输入1,程序就给出a和b中大者,输入2,就给出a和b中小者,输入3,则求a与b之和。
#includestdio.h
intmain()
{voidfun(intx,inty,int(*p)(int,int));
intmax(int,int);intmin(int,int);
intadd(int,int);inta=34,b=-21,n;
printf(pleasechoose1,2or3:);
scanf(“%d”,n);
if(n==1)fun(a,b,max);
elseif(n==2)fun(a,b,min);
elseif(n==3)fun(a,b,add);
return0;
}
intfun(intx,inty,int(*p)(int,int))
{intresout;
resout=(*p)(x,y);
printf(“%d\n”,resout);
}?
intmax(intx,inty)
{intz;
if(xy)z=x;
elsez=y;
printf(max=);
return(z);
}
intmin(intx,inty)
{intz;
if(xy)z=x;
elsez=y;
printf(min=);
return(z);
}?
intadd(intx,inty)
{intz;
z=x+y;
printf(sum=);
return(z);
}