清华大学_C++课程_第10讲指针(上)_376102715.pptVIP

清华大学_C++课程_第10讲指针(上)_376102715.ppt

  1. 1、本文档共40页,可阅读全部内容。
  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文档。上传文档
查看更多
§10.2 指针变量 §10.4 数组的指针变量 §10.4 数组的指针变量 2、指针变量可以指向数组中的任何元素,注意指针变量的当前值。因此:使用指针时,应特别注意避免指针访问越界 例如:本例中第二次for循环,p已经越过数组的范围,但编译器不能发现该问题。避免指针访问越界是程序员自己的责任 §10.4 数组的指针变量 3、指针使用的几个细节。设指针p指向数组a(p=a),则: ① p++(或 p += 1),则:*p=? ② *p++表示什么意义? ③ *(p++)与*(++p)的分别表示什么意义? ④ (*p)++表示什么意义? §10.4 数组的指针变量 答案: ① p++(或 p += 1),p指向下一个元素。 ② *p++,相当于*(p++)。 因为,*和++同优先级,++是右结合运算符。 ③ *(p++)与*(++p)的作用不同。 *(p++):先取*p,再使p加1。 *(++p):先使p加1,再取*p。 ④ (*p)++表示,p指向的元素值加1。 小结:如果p当前指向数组a的第i个元素,则: *(p--)相当于a[i--],先取*p,再使p减1。 (*p)--相当于a[i]--, 先取*p,再使*p减1。 *(++p)相当于a[++i],先使p加1,再取*p。 *(--p)相当于a[--i],先使p减1,再取*p。 §10.4 数组的指针变量 数组名和指针变量作函数参数 [例] 将数组a中n个元素按相反顺序存放 §10.4 数组的指针变量 void inv(int x[], int n) /* 形参是数组 */ {int t,i,j,m=(n-1)/2; ?for(i=0; i=m; i++) ?{ j = n - 1 - i; ???t = x[i]; x[i] = x[j]; x[j] = t;?} ? } ? main() {static int i, a[10] = {3,7,9,11,0,6,7,5,4,2}; ?printf(the original array:\n); ?for(i=0; i10; i++) ?printf(%d , a[i]); ?printf(\n); inv(a,10);? printf(the array has been inverted:\n); ?for(i=0; i10; i++)? ?printf(%d , a[i]);? printf(\n);} §10.4 数组的指针变量 函数inv()可以用指针作形参,运行情况与用数组作形参相同。 void inv(int *x, int n) {?int *p, t, *i, *j, m=(n-1)/2; i = x; /* 指针i指向数组第一个元素 */ j = x + n - 1;/* 指针j指向数组最后一个元素 */ p = x + m; /* 指针p指向数组中间一个元素 */ for(;i=p;i++,j--) { t = *i; *i = *j; *j = t; } return;} §10.4 数组的指针变量 小结:数组作函数的参数,实参和形参之间传送数组的首地址,首地址可以用指针表示,也可以用数组名表示,因此,实参和形参有以下四种组合情况。 组合情况 实参 形参 1 数组名 数组名 2 数组名 指针 3 指针 指针 4 指针 数组名 重点关注 需要了解直接访问和间接访问的含义; 指针与指针变量的概念 注意P172倒数第2段,仔细阅读和体会 数组名实际是指针,但不是指针变量. 指针做函数参数传递 说明:本周上机考试,因此没有作业和实验要求 * 第10讲 指针(上) 参考教材的10.1 到10.3节 指针是C++语言中的一个重要概念。掌握指针的用法,可使程序简洁、高效、灵活,不难学也不容易学。关键是理解下列故事含义。 故事:很久很久以前,特务阿宝接到上级指令,要去寻找一个密钥。几经周折,线人告之:密钥藏在某墓地的看幕人所住的一栋小楼的房间中。一个风雨交加的夜晚,阿宝潜入了小楼,房间很多,不知该进哪一间,正在一筹莫展之际,忽然走廊上的电话铃声响起。艺高人胆大,阿宝毫不迟疑,抓起听筒,一个陌生人说:“去打开小姐卧室 ,那里有线索”。阿金疾步上楼,打开小姐卧室,用电筒一照,只见桌上赫然6个大字:1000房间。阿宝眼睛一亮,迅速找到1000房间,取出重要数据66(密钥),完成任务。 10.1 指针的概念 指针(pointer):是内存中某

文档评论(0)

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

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

1亿VIP精品文档

相关文档