数组与指针ppt课件.ppt
《数组与指针ppt课件.ppt》由会员分享,可在线阅读,更多相关《数组与指针ppt课件.ppt(35页珍藏版)》请在三一办公上搜索。
1、,数组与指针,1.空间分类2.为什么用指针3.指针的定义及使用方式4.指针的访问方式(即变量操作的本质)5.数组同指针的关系6.数组和指针作为函数的参数和返回值,栈空间堆空间,空间分类,数组-物理空间存放的本质,定义数组就是申请了一块连续的内存空间。用户可操作的空间大小等于数组元素*每个元素所占的空间大小。数组元素连续存放在这块空间中。如:int intarray5;占用了20个字节,因为每个整型数占四个字节。如给intarray3赋值为3,如果这块空间的起始地址为100,那么在内存中的情况是:当你引用变量intarrayidx时,系统计算它的地址100+idx*4,对该地址的内容进行操作。,
2、参照几何坐标系,数组下标超界问题,C/C+语言不检查数组下标的超界。如定义数组 int intarray10;合法的下标范围是0 9,但如果你引用intarray10,系统不会报错。如数组intarray 的起始地址是1000,当引用intarray10时,系统对1040号内存进行操作。而1040可能是另一个变量的地址解决方法(1)由程序员自己控制。在对下标变量进行操作前,先检查下标的合法性。(2)利用容器等,数组的缺点,必须知道数组的确定类型和空间大小,才能定义数组。数组的大小受到栈大小的限制。通常栈的大小是2M。,指针的概念,如在某一程序中定义了 int x=2;如系统给x分配的空间是10
3、00号单元,则指向x的指针是另一个变量p,p中存放的数据为10001000号单元的内容有两种访问方式:访问变量x(直接访问)访问变量p指向的单元的内容(间接访问),定义指针变量,定义指针变量要告诉编译器该变量中存放的是一个地址。指针变量的主要用途是提供间接访问,因此也需要知道指针指向的单元的数据类型指针变量的定义 类型标识符*指针变量;如:int*intp;double*doublep;int*p,x,*q;,类型标识符的作用?,指针变量的操作,如何让指针指向某一变量?因为我们不知道系统分配给变量的真正地址是什么。用取地址运算符“&运算符后面不能跟常量或表达式。如&2 是没有意义的,&(m*n
4、+p)。也是没有意义的如何通过指针变量处理和改变它所指向的单元的值?用地址解析运算符“*”解决。如*intp 表示的是 intp 指向的这个单元的内容。如:*intp=5 等价于 x=5在对 intp 使用引用运算之前,必须先对 intp 赋值,指针实例,如有:int X,*intp,Y;X=3;Y=4;intp=,如执行:*intp=Y+4;,注意:不能用 intp=100;因为我们永远不知道变量存储的真实地址,而且程序每次运行变量地址可能都不同。,指针使用,指针变量可以指向不同的变量。如上例中intp指向x,我们可以通过对intp的重新赋值改变指针的指向。如果想让intp指向y,只要执行i
5、ntp=&y就可以了。这时,intp与x无任何关系。同类的指针变量之间可相互赋值,表示二个指针指向同一内存空间。空指针指针没有指向任何空间空指针用常量NULL表示,NULL的值一般赋为0不能引用空指针指向的值野指针(没有初始化的指针),指针变量的使用,设有定义 int x,y;int*p1,*p2;,执行语句:x=23;y=234;,执行语句:p1=,执行语句:*p1=34;p2=p1;,指针实例,有以下结构,比较执行 p1=p2和*p1=*p2后的不同结果。,指针的初始化,指针在使用前必须初始化。和别的变量一样,定义指针不初始化是一个比较普通的错误。没有初始化的指针可能指向任意地址,对这些指
6、针作操作可能会导致程序错误(野指针)。NULL是一个特殊指针值,称为空指针。它的值为0。它可被用来初始化一个指针,表示不指向任何地址。,思考:int*p;*p=5;有什么问题?,指针与数组,在C+中,指针和数组关系密切,几乎可以互换使用数组名可以看成是常量指针,对一维数组来说,数组名是数组的起始地址,也就是第一个元素的地址如执行了p=array,则p与array是等价的,对该指针可以进行任何有关数组下标的操作,数组实际访问方式:C+语言的下标运算符 是以指针作为操作数的,fiboni被编译系统解释为*(fibon+i)即表示为fibon所指(固定不可变)元素向后第i个元素。无论以下标方式或指针
7、方式存取数组元素时,系统都是转换为指针方法实现。,通过指针访问数组时,下标有效范围由程序员自己检查。,数组元素的指针表示,方法3:for(p=a;pa+10;+p)cout*p;,方法2:for(i=0;i10;+i)cout*(a+i);,方法1:for(i=0;i10;+i)cout ai;,方法4:for(p=a,i=0;i10;+i)cout*(p+i);,方法5:for(p=a,i=0;i10;+i)cout pi;,下列程序段 有无问题?for(i=0;i10;+i)cout*a;+a;,指针同样可以进行”+”,”-“运算,运算结果也是指向后一个或前一个数组元素。,*但是有”+”和
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数组 指针 ppt 课件

链接地址:https://www.31ppt.com/p-5361435.html