资源预览内容
第1页 / 共15页
第2页 / 共15页
第3页 / 共15页
第4页 / 共15页
第5页 / 共15页
第6页 / 共15页
第7页 / 共15页
第8页 / 共15页
第9页 / 共15页
第10页 / 共15页
亲,该文档总共15页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
指针与函数,指针变量作函数参数,P225,形参,实参,指针变量,指针变量,指针变量作实参时,将指针变量的值(变量的地址)传递给被调用函数的形参(通常形参是指针变量)。,变量地址,指针变量,若实参为变量的地址,则被调用函数的形参必须是指针变量。,一维数组名,一维数组/指针变量,若实参为一维数组名,则被调用函数的形参可以是一维数组也可以是指针变量。,指针变量,既可以作为函数的形参,也可以作函数的实参。但作实参时指针变量必须赋值。 指针变量作函数的参数通常实现地址传递。,#include void fun(int x,int y, int *p , int *q ) *p=xy?x:y; *q=xy?x:y; void main() int a,b,max,min,*q; scanf(%d%d, ,例:阅读下列程序,输入23,67,写出其执行结果。,int *p, b b0 ; for(i=1;ibi) *pt1=bi; if(*pt2bi) *pt2=bi; void main( ) int aa10=-1,2,3,-4,-5,7,8,9,10,-7,*p1,*p2,a,b; p1= ,例:下列程序实现的功能求最大值和最小值,请填空。,int b , int *pt1, int *pt2,*pt1=*pt2=,int *b,#include #include void main() char *s1=BD,*s2=BC,*s3=AB; void swap(char *s1,char *s2); if(strcmp(s1,s2)0)swap(s1,s2); if(strcmp(s2,s3)0)swap(s2,s3); if(strcmp(s1,s2)0)swap(s1,s2); puts(s1);puts(s2);puts(s3); void swap(char *s1,char *s2) char t; t=*s1;*s1=*s2;*s2=t; ,例:阅读下列程序,写出其执行结果。,*s1 *(s1+0) s10,*s2 *(s2+0) s20,A,B,A,B,AD BC BB,#include #include void fun(char *w, int m) char *p1,*p2;int s; p1=w;p2=w+m-1; while(p1p2) s=*p1+; *p1=*p2-;*p2=s; main() char a=”ABCDEFG”; fun(a, strlen(a); puts(a);,例:阅读下列程序,写出程序的输出结果。,AGAAGAG,若有定义:int a34, (*p1)4=a;,指向数组的指针作函数参数,P249,形参,实参,二维数组名,一维数组 二维数组 指针变量 指向一维数组的指针变量,编程思路: 函数average求总平均成绩; 函数find找出并输出第i个学生的成绩。 主函数实现数据的输入。,P249 例10.13 有一个班,3个学生,各学4门课,计算总平均分数以及第n个学生的成绩。,#include void average(float *p,int n); void find(float (*p)4,int n);,二维数组首行地址,int main() float score34; int i,j; for(i=0;i3;i+) for(j=0;j4;j+) scanf(%f, ,score00的地址,score0,score1,score2,void average( float *p, int n) float *p_end; float sum=0,aver; p_end=p+n-1; for( ;p=p_end; p+) sum=sum+(*p); aver=sum/n; printf(average=%5.2fn,aver); ,p,p_end,p+后的指针p,void find( float (*p)4, int n) int i; printf(The score of No.%d are:n,n); for(i=0;i4;i+) printf(%5.2f ,*(*(p+n)+i); printf(n); ,p,p+2,指向函数的指针变量,P260,类型说明 (*指针变量)( );,函数指针(地址):一个函数在编译时,被分配了一个入口地址,这个地址就称为该函数的指针。 函数名代表该函数的入口地址 可以用一个指针变量指向一个函数,然后通过该指针变量调用此函数。,指针变量的类型应与指向函数的类型一致。,指针函数(返回指针值的函数),P265,类型说明 *函数名( );,函数的返回值:整型值、实型值、字符值和地址(指针)值。 指针函数就是返回指针值的函数。,#include char *strc(char *s1,char c) char *p=s1; while (*p ,例:读下列程序,写出其运行结果。,ter OK!,指针的数据类型 int *p;p为指向整型数据的指针变量。指针变量为列指针。 int (*p)n;p为指向含有n个整型元素的数组的指针变量。指针变量为行指针。 int *pn;p为含有n个指向整型的指针元素的指针数组的数组名。 int *p( );p为指针函数,返回地址值。 int (*p)( );p为指向整型函数的指针变量。 int *p;p为指针变量,它指向一个指向整型数据的指针变量。指针变量为行指针。,
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号