第5章 指针3(周)

第5章 指针3(周)

ID:43739294

大小:455.50 KB

页数:26页

时间:2019-10-13

第5章 指针3(周)_第1页
第5章 指针3(周)_第2页
第5章 指针3(周)_第3页
第5章 指针3(周)_第4页
第5章 指针3(周)_第5页
资源描述:

《第5章 指针3(周)》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、voidSwap(int*x,int*y){inttemp;temp=*x;*x=*y;*y=temp;}main(){inta,b;a=15;b=8;Swap(&a,&b);printf("a=%d,b=%d",a,b);}voidSwap(intx,inty){inttemp;temp=x;x=y;y=temp;}main(){inta,b;a=15;b=8;Swap(a,b);printf("a=%d,b=%d",a,b);}程序1程序2主调函数被调函数实参形参结果有何不同?NotWork!Why?5.5指针作为函数参数主调函数被调函数main(){int

2、a,b;a=15;b=8;Swap(a,b);printf("a=%d,b=%d",a,b);}voidSwap(intx,inty){inttemp;temp=x;x=y;y=temp;}1515ab实参形参88xyab程序1xy主调函数被调函数main(){inta,b;a=15;b=8;Swap(&a,&b);printf("a=%d,b=%d",a,b);}voidSwap(int*x,int*y){inttemp;temp=*x;*x=*y;*y=temp;}&a&a实参形参&b&bxyab程序2xy15ab8swap函数的几种错误形式(1/3)参数单

3、向传递voidSwap(intx,inty){inttemp;temp=x;/*x,y为内部变量*/x=y;y=temp;}swap函数的几种错误形式(2/3)参数单向传递voidSwap(int*p1,int*p2){int*p;p=p1;/*p1,p2为内部变量*/p1=p2;p2=p;}swap函数的几种错误形式(3/3)指针p没有确切地址voidSwap(int*p1,int*p2){int*p;/*指针p未初始化*/*p=*p1;*p1=*p2;*p2=*p;}为什么使用指针做函数参数?用指针作函数参数,可以返回多个值减少参数传递过程中的数据复制量。用

4、指针作函数参数,通过将数据区的地址传递给函数,使函数能够改动该地址处的数据。传地址调用和传值调用传(地)址调用:将被调函数的形式参数说明成指针形式,在调用函数中,将实参的地址传递给形参。属于双向参数传递。传值调用:被调函数的形式参数是普通类型,在调用函数中,将实参的值拷贝给形参。因为实参和形参占用各自的内存单元(在各自的栈空间中),互不干扰,被调函数中对形参值的改变不会改变实参的值。属于单向数据传递方式。被调函数swap(int*p1,int*p2)调用函数swap(pa,pb);被调函数swap(intx,inty)调用函数swap(a,b);数组名/指针作函

5、数参数(一维数组)实参类型调用方式例子形参类型函数首部例子数组名fun(a);数组名voidfun(inta[])数组名fun(a);指针变量voidfun(int*pa)指针变量fun(pa);数组名voidfun(inta[])指针变量fun(pa);指针变量voidfun(int*pa)数组名/指针作函数参数(二维数组)实参类型调用方式例子形参类型函数首部例子数组名fun(a);数组名voidfun(inta[][N])数组名fun(a);指针变量voidfun(int(*pa)[N])指针变量fun(pa);数组名voidfun(inta[][N])指针

6、变量fun(pa);指针变量voidfun(int(*pa)[N])二维数组的指针作函数参数用指向变量的指针变量用指向一维数组的指针变量用二维数组名实参形参数组名intx[][4]行指针变量int(*q)[4]数组名intx[][4]行指针变量int(*q)[4]数组名a数组名a行指针变量p1行指针变量p1若inta[3][4];int(*p1)[4]=a;int*p2=a[0];列指针变量p2列指针变量int*q例将数组a中的n个整数按相反顺序存放ij379110675420123456789ijijijji11760594723实参与形参均用数组voidin

7、v(intx[],intn){intt,i,j,m=(n-1)/2;for(i=0;i<=m;i++){j=n-1-i;t=x[i];x[i]=x[j];x[j]=t;}}main(){inti,a[10]={3,7,9,11,0,6,7,5,4,2};inv(a,10);printf("Thearrayhasbeenreverted:");for(i=0;i<10;i++)printf("%d,",a[i]);printf("");}m=4例将数组a中的n个整数按相反顺序存放voidinv(int*x,intn){intt,*p,*i,*j,m=(n-

8、1)/2;i=x;j=x

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。