资源描述:
《指针与动态内存管理ppt课件.pptx》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第02章指针与动态内存分配-2-本章内容安排指针与动态内存分配函数及参数传递雇员管理系统版本1(数组)雇员管理系统版本2(动态内存分配)-3-1、指针变量地址的概念定义一个变量,程序执行后数据会加载到内存中的某个地方,计算机如何找到这个地方?地址:内存按字节编号,0、1、2……存储单元的编号就是该单元的地址,它表明了该存储单元在内存中的位置系统根据变量的地址而不是任何别的东西寻找某个变量。变量的地址:变量占用的首个存储单元的地址-4-变量的地址变量的地址变量a占用的是内存的2000~2003四个单元,变量a的地址为20
2、00。源代码中写a=5;我们可以理解为将5赋给变量a;而计算机在执行程序时,只是将5送入2000~2003四个存储单元中。2000…02…2002inta;-5-指针变量inta=5;int*pa;pa=&a;指针变量pa指向变量a-6-2、指针变量的使用要点引用前一定要初始化inta=5;int*pa;//pa=&a;一定要初始化*pa=10;-7-指针变量的使用要点数据类型要匹配指针变量的数据类型,必须与其所指向的变量的数据类型一致。不可以在不同类型指针变量之间赋值。指针变量中存储的是一个表示地址的整数值,但不可以
3、将一个整数值直接赋给指针变量。-8-指针变量的使用要点void指针及强制类型转换inta=7,*pa=&a;doubleb=2.5,*pb=&b;void*pv;pv=pa;cout<<*(int*)pv<4、inta[10];intk;for(k=0;k<10;k++){*(a+k)=k;}-11-指针与一维数组通过指针变量访问数组元素inta[10];intk,*p;p=a;for(k=0;k<10;k++){*(p+k)=k;}或p=&a[0];或者p[k]=k;-12-指针与一维数组指针变量和数组名的使用区别a[k]p[k]*(a+k)*(p+k)for(k=0;k<10;k++){*p++=k;}a不能被改变X*a++=k;-13-4、指向数组的指针数据类型(*指针变量名)[常量表达式]inta[2][3]={……
5、};int(*p)[3];p=a;for(inti=0;i<2;i++){for(intj=0;j<3;j++){p[i][j]=……}}指向数组的指针常用于指向二维数组-14-指向数组的指针访问数组元素的其它方式a[i][j]p[i][j]*(a[i]+j)*(p[i]+j)*(*(a+i)+j)*(*(p+i)+j)-15-5、指针数组数据类型*变量名[常量表达式]inta,b,c,d;int*p[4]={&a,&b,&c,&d};intaa[2][3];int(*pa)[3];pa=aa;定义含4个元素的指针数组
6、,p只是数组名pa是指针变量,指向含3个int元素的一维数组-16-6、二级指针指向指针的指针inta=a;int*pa=&a;int**ppa=&pa;a=5;*pa=5;**ppa=5;-17-二级指针示例二级指针经常与指针数组配合使用char**p;char*name[]={“hello”,“good”,“world”,“bye”,“”};p=name;while(**p!=NULL){cout<<*p++<