资源描述:
《C语言第十六讲.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、C语言电子教案(十六)第十六讲第十章指针主要内容:§10.5函数的指针和指向函数的指针变量§10.6返回指针的函数§10.7指针数组和指向指针的指针1§10.5函数的指针和指向函数的指针变量指针变量可以指向整型变量、字符串、数组,也可以指向一个函数。2一、函数的指针函数的指针:一个函数在内存中占一定的存储空间,编译时被分配一个入口地址,这个入口地址就称为函数的指针。函数指针的表示:函数的指针用函数名来表示。3二、指向函数的指针变量指向函数的指针的定义:类型标识符(*变量名)();如:float(*f)();,定义f是一个指向单
2、精度型函数的指针变量。注意:1.“*f”前后的一对圆括号不能省略。2.定义后的指针不指向任何一个函数,只有当对指针变量赋值之后,才能指向特定的函数。4三、指向函数的指针变量的使用为指向函数的指针变量赋值:变量名=函数名;如:float(*pf)();pf=max;,定义f是一个指向单精度型函数的指针变量,pf指向函数max。指向函数的指针变量的使用:如果有:float(*pf)();pf=max;,则在程序中,(*pf)与max等价,也就是说,在调用函数时,可以使用函数名,也可以使用指向函数的指针。5例1求两个数中的最大数(用
3、指针调用函数)max(intx,inty){intz;if(x>y)z=x;elsez=y;returnz;}main(){inta,b,c;int(*p)();p=max;scanf("%d,%d",&a,&b);c=(*p)(a,b);printf("a=%d,b=%d,max=%d",a,b,c);}运行程序定义p是一个指向整型函数的指针变量将函数max的入口地址赋给指向函数的指针变量p用指针调用函数(*p)等价于max6四、用指向函数的指针变量作函数的参数函数的参数不仅可以是变量、指针变量、数组名、指向数组的指针变
4、量,还可以是指向函数的指针。用指向函数的指针作函数的参数,目的就是为了实现函数地址的传递,也就是将函数名传给形参。如果函数的形参是指向函数的指针变量,则相应的实参就应当是函数名或者指向函数的指针变量。7例2求两个数中最大数的阶乘(用函数的指针作参数)max(inta,intb){intf;if(a>b)f=a;elsef=b;return(f);}fun(int(*p)(),intx,inty){inti,s=1;for(i=2;i<=(*p)(x,y);i++)s=s*i;return(s);}main(){int(*p1)
5、(),r,m,n;p1=max;scanf("%d%d",&m,&n);r=fum(p1,m,n);printf("%d",r);}运行程序等价于max(x,y)8max(intx,inty){intz;z=(x>y)?x:y;returnz;}例3指向函数的指针的使用min(intx,inty){intz;z=(x6、);printf(“%d”,r);}main(){inta,b;scanf("%d,%d",&a,&b);printf("max=");process(a,b,max);printf("min=");process(a,b,min);printf("add=");process(a,b,add);}在main函数中三次调用process函数,由于使用了不同的函数名作实参,因而实现了不同的功能。运行程序9§10.6返回指针的函数一个函数可以返回整型、字符型、实型函数值,也可以返回一个指针值,即将地址作为函数值返回到主调函数中
7、。这样的函数叫做返回指针的函数。10一、返回指针的函数的定义格式:类型标识符*函数名(参数表);如:int*a(intm,intn)表示a是一个函数,有两个形参m和n,均为整型,函数的返回值是一个指向整型数据的指针11例1输入编号,查找并输出学生的全部成绩main(){floatscore[][4]={{60,70,80,90},{56,89,67,88},{34,78,90,66}};float*search();float*p;inti,m;scanf("%d",&m);p=search(score,m);for(i=0;
8、i<4;i++)printf("%5.2ft",*(p+i));printf("");}float*search(p1,n)float(*p1)[4];intn;{float*pt;pt=*(p1+n);returnpt;}数组的首地址传给行指针p1返回第n行0列元素的