资源描述:
《C程序设计简明教程 王晓东 第8章指针2》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、8.5函数的指针和指向函数的指针变量函数指针:函数在编译时被分配的入口地址,用函数名表示max…...指令1指令2函数指针变量赋值:如p=max;函数返回值的数据类型专门存放函数入口地址可指向返回值类型相同的不同函数指向函数的指针变量定义形式:数据类型(*指针变量名)();如int(*p)();函数指针变量指向的函数必须有函数说明函数调用形式:c=max(a,b);c=(*p)(a,b);c=p(a,b);对函数指针变量pn,p++,p--无意义()不能省int(*p)()与int*p()不同1共35张例用函数指针变量调用函数,比较两个数大小main(){intmax(in
2、t,int);inta,b,c;scanf("%d,%d",&a,&b);c=max(a,b);printf("a=%d,b=%d,max=%d",a,b,c);}intmax(intx,inty){intz;if(x>y)z=x;elsez=y;return(z);}main(){intmax(int,int),(*p)();inta,b,c;p=max;scanf("%d,%d",&a,&b);c=(*p)(a,b);printf("a=%d,b=%d,max=%d",a,b,c);}intmax(intx,inty){intz;if(x>y)z=x;elsez=y;
3、return(z);}2共35张用函数指针变量作函数参数例用函数指针变量作参数,求最大值、最小值和两数之和voidmain(){inta,b,max(int,int),min(int,int),add(int,int);voidprocess(int,int,int(*fun)());scanf("%d,%d",&a,&b);process(a,b,max);process(a,b,min);process(a,b,add);}voidprocess(intx,inty,int(*fun)()){intresult;result=(*fun)(x,y);printf("%d"
4、,result);}max(intx,inty){printf(“max=”);return(x>y?x:y);}min(intx,inty){printf(“min=”);return(x5、8,90,66}};float*search(float(*pointer)[4],intn),*p;inti,m;printf("Enterthenumberofstudent:");scanf("%d",&m);printf("ThescoresofNo.%dare:",m);p=search(score,m);for(i=0;i<4;i++)printf("%5.2ft",*(p+i));}float*search(float(*pointer)[4],intn){float*pt;pt=*(pointer+n);return(pt);}pointerpointer+
6、1347890665689678860708090score数组pppp4共35张例写一个函数,求两个int型变量中居于较大值的变量的地址int*f1(int*x,int*y){if(*x>*y)returnx;elsereturny;}main(){inta=2,b=3;int*p;p=f1(&a,&b);printf("%d",*p);}…...20002008200A20022004200623指针变量y指针变量x(f1)20022000COPY变量a变量b(main)指针变量p**5共35张例写一个函数,求两个int型变量中居于较大值的变量的地址…...…...200
7、02008200A2002200420062变量a变量b(main)3指针变量p**2002int*f3(int*x,int*y){if(*x>*y)returnx;elsereturny;}main(){inta=2,b=3;int*p;p=f1(&a,&b);printf("%d",*p);}6共35张例写一个函数,求两个int型变量中居于较大值的变量的地址int*f3(intx,inty){if(x>y)return&x;elsereturn&y;}main(){int