w08指向与指针变量.pptVIP

  1. 1、本文档共54页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
w08指向与指针变量

指针是C++的精华,也是学习的重点和难点 正确地使用指针可编写简洁、高效和通用的程序。 错误的使用指针易使程序运行出错或导致系统崩溃 8.1 指针和指针变量 8.2 指针和数组 8.3 指针数组和指向指针的指针 8.4 指针和函数 8.5 new和delete运算符 8.6 引用和其他类型的指针 8.7 简单链表及其应用 1.赋值运算(已介绍) 2. 算术运算 3.关系运算 学习难点:教材P143 “++” “--” “*” “”优先级相同,按自右向左结合。分析执行运算时的顺序,比较以下表达式的不同: b=*p1++ b=* ++ p1 b=(*p1)++ b=++*p1 2. 算术运算 6618556 p1 p=p1; p1=p2; p2=p; 6618552 j 20 6618556 i 10 int i=10,j=20; int *p1=i,*p2=j,*p; 6618552 p2 这个语句把p2保存的变量j的地址的复制到指针p1中。 p 6618556 6618552 继续执行 8.1 指针和指针变量 ——指针变量的运算 2. 算术运算 6618556 p1 p=p1; p1=p2; p2=p; 6618552 j 20 6618556 i 10 int i=10,j=20; int *p1=i,*p2=j,*p; 6618552 p2 这个语句把p保存的变量i的地址复制到指针p2中。 p 6618556 6618552 由此可见,这三个语句的执行,交换了指针p1、p2原来所保存的变量地址。但请注意,变量i、j的地址没有变化。 6618556 8.1 指针和指针变量 ——指针变量的运算 3. 关系运算 两个指针变量的关系运算是根据两个指针变量的值(无符号整数)进行比较的。 通常只有同类型的指针变量进行比较才有意义。 两指针变量相等的含义是指针变量指向相同内存单元 两指针变量不相等的含义是指针变量指向不同内存单元 8.1 指针和指针变量 ——指针变量的运算 指针关系运算包括 ==, !=,,,=,=。 在下面指针与数组的关系中,请注意以上所列难点。 取p1当前所指单元的内容后,p1指向下一个变量。等同于b=*p1,p1++; P1指向下一个单元后,取其内容 取得p1所指单元的内容加1,p1不变,该存储单元的内容改变 先将p1所指单元的内容加1,再取出该单元的内容。与上稍有不同。 8.1 指针和指针变量 ——指针变量的运算 8.2 指针和数组 ——指针与数组 8.2.1. 用指针访问数组元素 void main() { int a[5],j,*p; p=a; for(j=0;j5;j++)*p++=j; p=a[0]; for(j=0;j5;j++)cout“a[”j“]”*p++‘\t’; coutendl; } 数组与指针有着密切联系 a[0] a[1] a[2] a[3] a[4] j p 在C++中,数组的首地址称为数组的指针。它即可用数组名表示,也可用第0个元素表示。例如 void main() { int a[5],j,*p; p=a; for(j=0;j5;j++)*p++=j; p=a[0]; for(j=0;j5;j++)cout“a[”j“]”*p++‘\t’; coutendl; } 虽然a不是指针变量,但p=a是合法语句,这是把数组a的地址码拷贝到指针p中。这说明数组名也是一个地址,实际上这个地址就是数组第0个元素的地址,故称为数组的首地址。即 a[0] a[1] a[2] a[3] a[4] j p 0 然后执行循环,先使j初始化 *p a[0] 8.2 指针和数组 ——指针与数组 void main() { int a[5],j,*p; p=a; for(j=0;j5;j++)*p++=j; p=a[0]; for(j=0;j5;j++)cout“a[”j“]”*p++‘\t’; coutendl; } 由于p在++左边,故先将j值赋给*p, a[0] a[1] a[2] a[3] a[4] j p 0 0 *p 然后指针p做++运算, a[0] 8.2 指针和数组 ——指针与数组 void main() { int a[5],j,*p; p=a; for(j=0;j5;j++)*p++=j; p=a[0]; for(j=0;j5;j++)cout“a[”j“]”*p++‘\t’; coutendl; } 由于p在++左边,故先将j值赋给*p, a[0] a[1] a[2] a[3] a[4] j p 0

文档评论(0)

f8r9t5c + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:8000054077000003

1亿VIP精品文档

相关文档