上海交通大学《C语言程序设计》课件-第7章指针__.pptxVIP

上海交通大学《C语言程序设计》课件-第7章指针__.pptx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第7章 间接访问—指针指针的概念指针运算与数组指针作为函数参数和返回值动态内存分配字符串再讨论指针数组与多级指针指向多维数组的指针指向函数的指针指针介绍 本章将介绍C++语言的一个重要的特性:指针,为了成为一个优秀的C++语言程序员,你必须掌握指针并熟练地使用它们。指针是内存的地址并可作为数据是一个灵活和危险的机制允许共享处理数据允许内存动态分配(只要需要,而非预先定义)指针的概念指针就是把地址作为数据处理指针变量:存储地址的变量变量的指针:当一个变量存储另一个变量的地址时,那我们说它就是那个变量的指针使用指针的目的:提供间接访问允许函数之间共享内存空间实现动态变量x1000 21000p指针的概念续如在某一程序中定义了 int x = 2;如系统给x分配的空间是1000号单元,则指向x的指针是另一个变量p,p中存放的数据单元的内容有两种访问方式:访问变量x(直接访问)访问变量p指向的单元的内容(间接访问)定义指针变量定义指针变量要告诉编译器该变量中存放的是一个地址。指针变量的主要用途是提供间接访问,因此也需要知道指针指向的单元的数据类型指针变量的定义 类型标识符*指针变量; 如:int *intp; double *doublep; int *p, x, *q;指针变量的操作如何让指针指向某一变量?因为我们不知道系统分配给变量的真正地址是什么。用地址运算符 “” 解决。如表达式 “x” 返回的是变量 x 的地址。如:intp = x; 运算符后面不能跟常量或表达式。如 2 是没有意义的,(m * n + p )。也是没有意义的如何通过指针变量处理和改变它所指向的单元的值?用引用运算符 “*” 解决。如 *intp 表示的是 intp 指向的这个单元的内容。如:*intp = 5 等价于 x = 5在对 intp 使用引用运算之前,必须先对 intp 赋值XX8310001000YY4410041004intpint针实例如执行:*intp=Y+4;如有:int X, *intp, Y;X=3;Y=4;intp=X;注意:不能用intp=100;因为我们永远不知道变量存储的 真实地址,而且程序每次运行变量地址可能都不同。指针使用指针变量可以指向不同的变量。如上例中intp指向x,我们可以通过对intp的重新赋值改变指针的指向。如果想让intp指向y,只要执行intp=y就可以了。这时,intp与x无任何关系。同类的指针变量之间可相互赋值,表示两个指针指向同一内存空间。空指针指针没有指向任何空间空指针用常量NULL表示,NULL的值一般赋为0不能引用空指针指向的值指针变量的使用设有定义 int x, y; int *p1,*p2;执行语句:x=23;y=234;执行语句:p1=x;p2=y;执行语句:*p1=34;p2=p1;1000x1004y1008p11012p2100023x1004234y1008p11012p2100023x1004234110121004p2100034x1004234110121000p2Ap1aBp2b解: ABp1ap1aBBp2bp2b指针实例有以下结构 比较执行 p1=p2和 *p1= *p2后的不同结果。 指针的初始化指针在使用前必须初始化。和别的变量一样,定义指针不初始化是一个比较普遍的错误。没有初始化的指针可能指向任意地址,对这些指针作操作可能会导致程序错误。NULL是一个特殊指针值,称为空指针。它的值为0。它可被用来初始化一个指针,表示不指向任何地址。第7章 间接访问—指针指针的概念指针运算与数组指针作为函数参数和返回值动态内存分配字符串再讨论指针数组与多级指针指向多维数组的指针指向函数的指针指针运算和数组指向数组元素的指针数组元素是一个独立的变量,因此可以有指针指向它。如:p = a[1], p = a[i]数组元素的地址是通过数组首地址计算的。如数组的首地址是 1000,则第i 个元素的地址是1000 + i * 每个数组元素所占的空间长度指针与数组在C++中,指针和数组关系密切,几乎可以互换使用数组名可以看成是常量指针,对一维数组来说,数组名是数组的起始地址,也就是第0个元素的地址如执行了p=array,则p与array是等价的,对该指针可以进行任何有关数组下标的操作例如:有定义 int a[10], *p 并且执行了 p = a, 那么可用下列语句访问数组a的元素for ( i=0; i10; ++i ) cout p[i]; 指针运算指针保存的是一个地址,地址是一个整型数,因此可以进行各种算术运算,但仅有加减运算是有意义的。指针运算与数组有密切的关系指针+1表示数组中指针指向元素的下

文档评论(0)

逍遥子 + 关注
实名认证
文档贡献者

互联网搬运工

1亿VIP精品文档

相关文档