高级语言程序设计教学课件第8章.ppt
《高级语言程序设计教学课件第8章.ppt》由会员分享,可在线阅读,更多相关《高级语言程序设计教学课件第8章.ppt(69页珍藏版)》请在优知文库上搜索。
1、n理解内存单元的双重属性理解内存单元的双重属性300130023006300330053007n变量与地址变量与地址内存中每个字节有一个编号内存中每个字节有一个编号地址地址 名称名称类型类型地址地址值值xint3000随机随机pint*3004随机随机n直接访问与间接访问直接访问与间接访问 直接访问直接访问:按变量地址存取变量值:按变量地址存取变量值 间接访问间接访问:通过存放变量地址的变量去访问变量:通过存放变量地址的变量去访问变量300130023006300330053007名称名称类型类型地址地址iint3000pint*3004n直接访问是用简单变量来访问内存单元的直接访问是用简单变
2、量来访问内存单元的地址地址n间接访问是通过存放简单变量地址(指针)间接访问是通过存放简单变量地址(指针)的变量去访问内存单元的地址的变量去访问内存单元的地址300130023006300330053007-9-n指针的主要应用:指针的主要应用:指针作形参可以在指针作形参可以在的值的值 利用指针作形参可以使子利用指针作形参可以使子 利用指针可以实现利用指针可以实现 利用指针可以实现利用指针可以实现(链表、队列、(链表、队列、堆栈、树等)的操作堆栈、树等)的操作 指针可以指针可以单向值传递单向值传递单向单向值传递值传递 形参是变量,实参可以是常量、变量或表达式。形参是变量,实参可以是常量、变量或表
3、达式。形参与实参占用不同的内存单元。形参与实参占用不同的内存单元。单向值传递单向值传递(形参的改变并不影响实参)。(形参的改变并不影响实参)。地址传递地址传递 形式参数为指针变量,实际参数为变量的地址。形式参数为指针变量,实际参数为变量的地址。形参指向实参。形参指向实参。地址传递地址传递13ff7613ff7813ff7a13ff7c3 5&a=13ff7c,&b=13ff78调用前:调用前:a=3,b=5-swap-x=13ff7c,y=13ff78-swap-调用后:调用后:a=5,b=313ff8213ff8413ff8613fe88n在该例题中,我们利用指针作形参实现了在该例题中,我们
4、利用指针作形参实现了修改实参变量修改实参变量的值。的值。n指针变量的说明指针变量的说明指针运算符指针运算符&取变量或存储单元的地址取变量或存储单元的地址 *取指针所指向的单元(变量)取指针所指向的单元(变量)结论:结论:*ptpt相当于相当于a a (*pt)+pt)+相当于相当于a+a+&*pt=&a=ptpt=&a=pt *&a=&a=*pt=a pt=a&aapt *pta=1;a=1;n指针变量的初始化指针变量的初始化 一般形式一般形式 -22-xpx&x8运行结果为:运行结果为:16 1616 16)04()04()04(242,2422242,2422222221212221acb
5、acbacbiabacabxiabacabxabxxaacbabxaacbabx if(flag 0)printf(Two real solutions:x1=%f,x2=%fn,t1+t2,t1-t2);else if(flag=0)printf(One solution:x1=x2=%fn,t1);else printf(Two complex solutions:x1=%f+%fi,x2=%f-%fin,t1,t2,t1,t2);int solvroot(float a,float b,float c,float*r1,float*r2)float delta;*r1=-b/(2*a);
6、delta=b*b-4*a*c;if(delta=0)*r2=sqrt(delta)/(2*a);else *r2=sqrt(-delta)/(2*a);return(int)delta;n在该例题中,我们利用指针作形参实现了在该例题中,我们利用指针作形参实现了子函数有三个的返回值。子函数通过返回子函数有三个的返回值。子函数通过返回值返回值返回(int)delta的值,通过形参的值,通过形参*r1、*r2与实参与实参&t1、&t2结合返回另外结合返回另外两个值两个值n函数定义形式:函数定义形式:例例 int*f(int *x,int*y)#include void main()int a,b,
7、*p;scanf(%d%d,&a,&b);p=printf(较大的数是较大的数是%dn,*p);if(*x*y)return x;elsereturn y;一、指向数组元素的指针一、指向数组元素的指针 数组元素是内存的一个单元,故数组元素是内存的一个单元,故指向数组元素的指针变量的性质指向数组元素的指针变量的性质和指向变量的指针变量是一样的和指向变量的指针变量是一样的 例如:例如:int a10,*p;也可以在定义时对指针赋初值:也可以在定义时对指针赋初值:int a10,二、通过指针引用数组元素二、通过指针引用数组元素n指针的运算指针的运算 指针变量的赋值运算指针变量的赋值运算p=&a;p=
8、array;p=&arrayi;p1=p;int i,a,*p,*p1;int array10;指针的算术运算指针的算术运算p i 表示的表示的p向前或向后移动向前或向后移动i个元素个元素(i为整型数为整型数)p+,p-,p+=i,p-=i等等若若p1与与p2指向同一数组,指向同一数组,p1-p2=两指针间元素个数两指针间元素个数p1+p2无意义无意义a0a1a2a3a4a5a6a7a8a9a数组数组 指针的关系运算指针的关系运算若若p1和和p2指向同一数组,则指向同一数组,则l p1p2 表示表示p1指的元素在后指的元素在后l p1=p2 表示表示p1与与p2指向同一元素指向同一元素若若p1
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 高级 语言程序设计 教学 课件