第--章━━指针与函数指针与堆内存优秀文档.ppt
上传人:天马****23 上传时间:2024-09-10 格式:PPT 页数:32 大小:141KB 金币:10 举报 版权申诉
预览加载中,请您耐心等待几秒...

第--章━━指针与函数指针与堆内存优秀文档.ppt

第--章━━指针与函数指针与堆内存优秀文档.ppt

预览

免费试读已结束,剩余 22 页请下载文档后查看

10 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

C++程序设计主要内容指针作为函数参数【例】(值传递、引用传递、地址传递━━函数的参数三种传递方式的比较)#include<iostream.h>voidswap1(intp1,intp2){inttemp=p1;p1=p2;p2=temp;}voidswap2(int&p1,int&p2){inttemp=p1;p1=p2;p2=temp;}voidswap3(int*p1,int*p2){inttemp=*p1;*p1=*p2;*p2=temp;}voidswap4(int*p1,int*p2){int*temp=p1;p1=p2;p2=temp;}voidmain(){inta=3,b=6;cout<<“a=”<<a<<“\tb=”<<b<<endl;swap1(a,b);cout<<“a=”<<a<<“\tb=”<<b<<endl;a=3;b=6;cout<<“a=”<<a<<“\tb=”<<b<<endl;swap2(a,b);cout<<“a=”<<a<<“\tb=”<<b<<endl;a=3;b=6;cout<<“a=”<<a<<“\tb=”<<b<<endl;swap3(&a,&b);cout<<“a=”<<a<<“\tb=”<<b<<endl;a=3;b=6;cout<<“a=”<<a<<“\tb=”<<b<<endl;swap4(&a,&b);cout<<“a=”<<a<<“\tb=”<<b<<endl;}【例】(形参为指针类型,实参可以是相同类型的数组名)#include<iostream.h>voidsort1(int*p,intn)//对p指针所指向的n个元素的数组按升序排序{inti,j,t;for(i=0;i<n-1;i++)//选择排序法for(j=i+1;j<n;j++)if(*(p+i)>*(p+j)){t=*(p+i);*(p+i)=*(p+j);*(p+j)=t;}}voidsort2(int*p,intn)//对p指针所指向的n个元素的数组按升序排序{inti,j,t;for(i=0;i<n-1;i++)//选择排序法for(j=i+1;j<n;j++)if(p[i]>p[j]){t=p[i];p[i]=p[j];p[j]=t;}}voidsort3(intp[],intn)//对n个元素的p数组按升序排序{inti,j,t;for(i=0;i<n-1;i++)//选择排序法for(j=i+1;j<n;j++)if(p[i]>p[j]){t=p[i];p[i]=p[j];p[j]=t;}}voidmain(){inta[6]={43,81,32,11,63,10};intb[6]={43,81,32,11,63,10};intc[6]={43,81,32,11,63,10};intd[6]={43,81,32,11,63,10};inti;sort1(a,6);for(i=0;i<6;i++)cout<<a[i]<<“\t”;cout<<endl;sort2(b,6);for(i=0;i<6;i++)cout<<b[i]<<“\t”;cout<<endl;sort3(c,6);for(i=0;i<6;i++)cout<<c[i]<<“\t”;cout<<endl;int*point=d;sort2(point,6);for(i=0;i<6;i++)cout<<d[i]<<“\t”;cout<<endl;}【例】(设计通用的两矩阵相乘的函数)分析:a为m×n矩阵,b为n×p矩阵,a乘以b得到c矩阵,则c为m×p的矩阵。k=n-1矩阵相乘公式:cij=∑aik×bkjk=0#include<iostream.h>voidmatrixmul(float*pa,float*pb,float*pc,intm,intn,intp){inti,j,k;floatt;for(i=0;i<m;i++)for(j=0;j<p;j++){t=0;for(k=0;k<n;k++)t+=(*(pa+i*n+k))*(*(pb+k*p+j));(*(pc+i*p+j))=t;}}voidmain(){floata[2][3]={{1,2,3},{4,5,6}};floatb[3][5]={{1,2,3,4,5},{6,7,8,9,6},{5,4,3,2,1}};floatc[2][5];matrixmul(*a,*b,*c,2,3,5);inti,j;for(i=0;i<2;i++){for(j=0;j<5;j++)cout<<c[i][j]<<“\t”;cout<<endl;}