最新第八单元--指针ppt课件.ppt

最新第八单元--指针ppt课件.ppt

ID:62173849

大小:506.00 KB

页数:63页

时间:2021-04-20

最新第八单元--指针ppt课件.ppt_第1页
最新第八单元--指针ppt课件.ppt_第2页
最新第八单元--指针ppt课件.ppt_第3页
最新第八单元--指针ppt课件.ppt_第4页
最新第八单元--指针ppt课件.ppt_第5页
资源描述:

《最新第八单元--指针ppt课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第八单元--指针问题引入在程序中引用变量名来使用这个内存空间,而编译时计算机则使用内存的地址来引用它。如果我们定义了一个整型变量intsum=0;那么内存就开辟了一个整型变量的空间存放sum的值。那么每一个变量都有一个对应的内存地址,我们还可以定义一个存放内存地址的变量就是指针,存储在指针中的地址是另一个变量的首地址。我们可以定义指针变量p,存放变量sum的首地址,变量sum是一个值为0的整型变量。存储在p中的地址是sum的第一个字节的地址。指针是C语言中最强大的工具之一,是精华所在,也是最容易让人困惑的主题。只有在正确理解指针概念的基础

2、上,才能对其操作灵活的运用。第二单元语言程序设计基础任务1:交换两个变量的值任务2:三个数排序任务3:实现放大镜单元任务单元小结拓展提高相关知识(二)指针变量赋值1.通过取地址运算符(&)获得地址值单目运算符(&)用来求出运算对象的地址,利用它可以把一个变量的地址赋给指针变量。举例:inta=5,*p,*q;p=&a;scanf((“%d”,&a);和scanf(“%d”,p)是等价的。相关知识2.通过指针变量获得地址值可以通过赋值运算,把一个指针变量中的地址值赋给另一个指针变量,从而使这两个指针变量指向同一地址。例如,若有上面的定义,则

3、语句:q=p;使指针变量q中也存放了变量a的地址,也就是说指针变量p和q都指向了整型变量a。注意:赋值号两边指针变量的基类型必须相同。3.给指针变量赋“空”值:p=NULL;NULL是在stdio.h头文件中定义的预定义符,因此在使用NULL时,应该在程序的前面出现预定义行:#include“stdio.h”。任务实施#include"stdio.h"main(){inta,b,*p1,*p2,p;printf("请输入a和b:");scanf("%d,%d",&a,&b);p1=&a;p2=&b;if(a

4、p=*p1;*p1=*p2;*p2=p;}printf("a=%d,b=%d",a,b);printf("指针1max=%d,指针2min=%d",*p1,*p2);}特别提示(1)C语言变量先定义后使用,指针变量也不例外,为了表示指针变量是存放地址的特殊变量,定义变量时在变量名前加“*”号。(2)指针变量的基类型(简称:指针变量类型):指针变量所指向数据的类型。我们知道,整型数据占用2个字节,浮点数据占用4个字节,字符数据占用1个字节。指针变量类型使得指针变量的某些操作具有特殊的含义。比如,pt1++;不是将地址值增1,而是

5、表示将地址值+2(指向后面一个整数)。(3)指针变量的基类型:实际上是指针变量所指向空间存储的数据的类型。(4)本程序中定义语句中的*p1和*p2功能是定义两个指针变量,而交换和输出语句中出现的*p1和*p2功能是指针变量指向的变量的值,即a和b。任务2:三个数排序——指针变量作为函数参数特别提示工作任务思路指导相关知识任务实施工作任务我们编写一个程序完成三个数由小到大排序。可以把两个数交换编写成自定义函数,如果用变量名作为函数参数,参数传递是单向的,形参数据交换了但实参仍然不变。所以本例考虑应用指针作为函数参数。思路指导自定义函数:sw

6、ap(*pi,*pj)应用指针作为函数参数完成数据交换主函数:输入三个整数inta,b,c。条件判断:三个数a和b比较,如果a比b大就交换;b和c比较,如果b比c大交换;a和c比较,如果a比c大交换。交换:调用自定义函数swap。相关知识指针变量作为函数的参数:格式:函数名(*指针变量)功能:用指针变量作函数的参数将实参值传递给形参。注意:实参和形参都要是指针变量。任务实施voidswap(int*p1,int*p2){inttemp;temp=*p1;*p1=*p2;*p2=temp;//交换指针指向变量的值}任务实施main(){in

7、ta,b,c;int*pa,*pb,*pc;printf("请输入a,b,c:");scanf("%d%d%d",&a,&b,&c);pa=&a;pb=&b;pc=&c;if(*pa>*pb)swap(pa,pb);//调用交换函数if(*pb>*pc)swap(pb,pc);if(*pa>*pc)swap(pa,pc);printf("swaped:");printf("a=%d,b=%d,c=%d",*pa,*pb,*pc);}特别提示被调用函数swap中通过参数传递获得了实参指针变量指向的变量地址,此时形参指针变量p1,

8、p2也已经分别指向实参指针变量所指向的变量a,b。也就是说实参、形参指针变量指向共同的变量。在函数swap中可通过形参指针交换了形参指针变量p1,p2所指向的变量的值。返回main()函数后p

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

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

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