c语言指针与数组

c语言指针与数组

ID:36291210

大小:576.00 KB

页数:64页

时间:2019-05-08

c语言指针与数组_第1页
c语言指针与数组_第2页
c语言指针与数组_第3页
c语言指针与数组_第4页
c语言指针与数组_第5页
资源描述:

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

1、第7部分 指针、指针与数组编程步骤:分析程序框架(粗算法)细算法程序调试本讲内容和目标要求正确理解指针的概念理解指针作函数参数时,函数的调用过程掌握指针与一维数组、二维数组的关系掌握与动态内存分配相关的三个库函数,并了解动态数组的用法至少能够读懂指针相关的程序,掌握指针在编程中的作用2新的概念:指针(Pointer)指针也是一种数据类型一种特殊的数据类型,这种类型存储的是地址C/c++的特色有些复杂但很实用指针变量与指针常量指针变量专门存放地址数据的变量指针常量指一个固定的地址,例如:数组名3两种寻址方式如

2、何读写内存中的数据?通过变量的地址访问变量所在的存储单元两种寻址方式直接(寻址)引用直接按变量地址来存取变量内容的引用方式间接(寻址)引用通过指针变量来间接存取它所指向的变量的引用方式房间1东西房间2房间1的钥匙直接寻址间接寻址4间接寻址访问:inti;int*pi;pi=&i;*pi=3;例1:直接寻址与间接寻址的表示直接寻址访问:inti;i=3;20000┇变量i┇3010变量pi地址数据变量名如果能直接寻址那当然就不用间接寻址了,但有时,只能用间接寻址的方法解决问题③数据类型:int*(指向整型变量的指针)

3、变量名称:pi变量的初值:&i含义:向系统申请一个动态区的内存空间,用来存储整型指针变量pi的初值&i,即将pi指向了变量i。通过*pi这种形式,实现对变量i的间接引用。①②200035为什么引入指针的概念指针有如下好处:为函数提供修改变量值的手段为C的动态内存分配系统提供支持可以改善某些子程序的效率为动态数据结构(如例链表、队列、二叉树等)提供支持6inti,*p;p=&i;*p=100;inti,*p=&i;floatj,*q=&j;p=q;inti;float*p;p=&i;int*p;p=100;判断对错!

4、必须进行赋值才能引用!否则p指向了哪呢?一个指针变量不能指向与其类型不同的变量!float又称变量P的基类型应在类型相同的指针变量之间赋值int*p;scanf(“%p”,&p);*p=100;指针变量只存放地址!int*p;*p=100;对指针变量赋值只能通过&求得!7例2:读程序#includevoidmain(){inta=5,b=10;int*pa=&a,*pb=&b;*pb=-1;printf(“b=%d”,*pb);pa=pb;printf(“*pa=%d,*pb=%d”,*pa,

5、*pb);}读程序的关键:指针变量指向哪儿?所指向的变量里存储的数据是多少?更改的是指针还是指针所指向的变量?&a&bpapb510ab-18指针变量与其它类型变量的对比共性在内存中占据一定大小的存储单元先定义,再使用指针变量的特殊性指针变量只能存放地址,而不能存放数据必须初始化后才能使用,否则指向不确定的存储单元只能指向同一基类型的变量,否则warning.可参与的运算:加、减、关系、赋值9主调函数被调函数voidmain(){inta,b;a=5;b=9;Swap(a,b);printf("a=%d,b=%d"

6、,a,b);}voidSwap(intx,inty){inttemp;temp=x;x=y;y=temp;}55ab实参形参99xyab传数值调用xy5temp95因为在局部变量的作用域外无法直接引用,所以无法交换成功。如何交换作用域外两个变量的值?(例3)间接引用!10主调函数被调函数voidmain(){inta,b;a=5;b=9;Swap(&a,&b);printf("a=%d,b=%d",a,b);}voidSwap(int*pa,int*pb){inttemp;temp=*pa;*pa=*pb;*pb=

7、temp;}&a实参形参&bxyab传地址调用xy5temp5ab995地址值指针的好处之一:通过间接引用改变了其它作用域内变量的值。当计算结果不只一个时,可以用这种方法,实现数据的“返回”。11习题7.1下面的函数用于计算两个整数之和,并通过指针形参z得到x和y相加后的结果。voidAdd(intx,inty,z){=x+y;}int**z12习题7.2函数功能为________voidExchange(int*p1,int*p2){intp;p=*p1;*p1=*p2;*p2=p;}A)交换*p1和*p2的值B

8、)正确,但无法改变*p1和*p2的值C)交换*p1和*p2的地址D)可能造成系统故障13小结1指针的基础知识寻址方式指针的概念、定义、赋值、间接引用14例4读程序#includevoidmain(){inta[]={2,4,6,8,10};inty=0,i,*p;p=&a[0];for(i=0;i<5;i++)y+=*(p+i);print

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

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

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