c语言指针与数组ppt课件.ppt

c语言指针与数组ppt课件.ppt

ID:58886191

大小:573.00 KB

页数:63页

时间:2020-09-30

c语言指针与数组ppt课件.ppt_第1页
c语言指针与数组ppt课件.ppt_第2页
c语言指针与数组ppt课件.ppt_第3页
c语言指针与数组ppt课件.ppt_第4页
c语言指针与数组ppt课件.ppt_第5页
资源描述:

《c语言指针与数组ppt课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第7部分 指针、指针与数组编程步骤:分析程序框架(粗算法)细算法程序调试7/28/20211《解析C程序设计》第2章简单程序设计新的概念:指针(Pointer)指针也是一种数据类型一种特殊的数据类型,这种类型存储的是地址C/c++的特色有些复杂但很实用指针变量与指针常量指针变量专门存放地址数据的变量指针常量指一个固定的地址,例如:数组名两种寻址方式如何读写内存中的数据?通过变量的地址访问变量所在的存储单元两种寻址方式直接(寻址)访问直接按变量地址来存取变量内容的访问方式间接(寻址)访问通过指针变量来间接存取它所指向的变量的访问方式房间1东

2、西房间2房间1的钥匙直接寻址间接寻址间接寻址访问:inti;int*pi;pi=&i;*pi=3;重点:直接寻址与间接寻址的表示直接寻址访问:inti;i=3;20000┇变量i┇3010变量pi地址数据变量名如果能直接寻址那当然就不用间接寻址了,但有时,只能用间接寻址的方法解决问题③数据类型:int*(指向整型变量的指针)变量名称:pi变量的初值:&i含义:向系统申请一个动态区的内存空间,用来存储整型指针变量pi的初值&i,即将pi指向了变量i。通过*pi这种形式,实现对变量i的间接引用。①②20003为什么引入指针的概念指针有如下好处:为函数

3、提供修改变量值的手段为C的动态内存分配系统提供支持可以改善某些子程序的效率为动态数据结构(如例链表、队列、二叉树等)提供支持inti,*p;p=&i;*p=100;inti,*p=&i;floatj,*q=&j;p=q;inti;float*p;p=&i;int*p;p=100;判断对错!必须进行赋值才能引用!否则p指向了哪呢?一个指针变量不能指向与其类型不同的变量!float又称变量P的基类型应在类型相同的指针变量之间赋值int*p;scanf(“%p”,&p);*p=100;指针变量只存放地址!int*p;*p=100;对指针变量赋值只能通过

4、&求得!例:读程序main(){inta=5,b=10;int*pa=&a,*pb=&b;*pb=-1;printf(“b=%d”,*pb);pa=pb;printf(“*pa=%d,*pb=%d”,*pa,*pb);}读程序的关键:指针变量指向哪儿?所指向的变量里存储的数据是多少?更改的是指针还是指针所指向的变量?&a&bpapb510ab-1主调函数被调函数main(){inta,b;a=5;b=9;Swap(a,b);printf("a=%d,b=%d",a,b);}voidSwap(intx,inty){inttemp;temp=x;

5、x=y;y=temp;}55ab实参形参99xyab传数值调用xy5temp95主调函数被调函数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实参形参&bxyab传地址调用xy5temp5ab995地址值指针的好处之一:通过将主调函数变量的地址传给形参实现了改变主调函数中变量的值。当计算结果不只一个时,可以用这种方法,实现数据的“返回”。指针变量与其它类型变量的对比

6、共性在内存中占据一定大小的存储单元先定义,再使用指针变量的特殊性指针变量只能存放地址,而不能存放数据必须初始化后才能使用,否则指向不确定的存储单元只能指向同一基类型的变量,否则warning.可参与的运算:加、减、关系、赋值指针运算-地址运算单个指针的运算加减运算:每加(减)1表示指针指向后(前)一个数据单元例:p++;--p;p=p+n;两个指针的运算比较:用来比较两个指针的前后位置例:(p1>p2)相减:两个指针相距多远?主要用于对数组的处理小结1指针的基础知识寻址方式指针的概念、定义、赋值、间接引用、运算习题7.1下面的函数用于计算两个整数

7、之和,并通过指针形参z得到x和y相加后的结果。voidAdd(intx,inty,z){=x+y;}int**z习题7.2函数功能为________voidExchange(int*p1,int*p2){intp;p=*p1;*p1=*p2;*p2=p;}A)交换*p1和*p2的值B)正确,但无法改变*p1和*p2的值C)交换*p1和*p2的地址D)可能造成系统故障读程序-1#includevoidmain(){inta[]={2,4,6,8,10};inty=0,i,*p;p=&a[0];for(i=0;i<5;i++)y+=

8、*(p+i);printf("%d",y);}两个重要内容:指针指向了哪个数组元素?是指针运算还是数组元素运算60006001600

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

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

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