〈新〉第五章指针.ppt

  1. 1、本文档共59页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
【教学目的与要求】 理解指针的基本概念和定义方法,指针与数组的的关系,掌握指针的基本操作,引用的使用,动态内存管理。 【教学重点与难点】 指针的基本操作,引用的使用,动态内存管理。 【教学方法】 讲授与上机相结合。 一、指针与一维数组 1、几个概念 ①、一个变量有地址,称变量的地址为该变量的指针; ②、每个数组都有一个起始地址,数组的起始地址称为数组的指针; ③、一个数组包含若干元素,每个数组元素都在内存中占用一定的存储单元,即都有相应的地址,数组元素的地址称为数组元素的指针; ④、指针变量可以指向变量,当然也可以指向数组和数组元素; 一维数组的数组名就是该数组的起始地址( 即指针),数组名是一个指针常量 §5.4 指针与数组 2、指向一维数组的指针变量 int a[10]; int *p; int a[10], *p; 因为 a与a[0]是等价的,所以可进行如下指针赋值运算: p=a; 或 p=a[0]; ? 注意:① 数组名代表数组首地址,即第0号元素的地址; ② a不代表整个数组,上述语句“p=a;”的作用是“把a数组的首地址赋给指针变量p”,而不是“把数组a各元素的值赋给p”。 ③ 定义时可以进行初始化: int *p=a[0]; //两侧的类型均为整形指针类型: int* int *p; *p=a[0]; 但 3、数组元素的引用 引用数组元素可以用下标法(如a[1]);也可以用指针法,即通过指向数组元素的指针找到所需的元素。? int a[10], *p; p=a; *p=5; a[0]=5; p=a[3]; *p=5; a[3]=5; C++规定:无论数组的数据类型如何,若指针变量p已指向数组中的某一元素,则p+1指向同一数组中的下一个元素(而不是将p简单的加1) 例如: int x[10], *p=x; p+1意味着使p在原值的基础上加4个字节,以使它指向下一元素; double x[10], *p=x; p+1意味着使p在原值的基础上 加8个字节,以使它指向下一元素; 4、通过指针访问一维数组 总之: ① 设d是一个数组元素所占的字节数,则p+i表示指针移动了i个元素,而它实际的地址变化为:p+i*d; ② *p即a[0],*(p+i)即a[i] 5、在使用指针变量引用数组时,应注意以下问题: ①、 p+1或a+1实际上表示数组元素a[1]的地址(a[1]);则p+i或a+i表示数组的第i个元素的地址(a[i]); 同理: *(p+i)或*(a+i)表示p+i或a+i所指向的数组元素,即a[i] ; ②、 指向数组的指针变量也可以带下标;如:p[i]与*(p+i)等价; ③、 若p已经指向某个数组元素a[i],则p+j表示指向数组元素a[i+j]; ④、 可以使用p++使指针变量p的值不断改变: for (p=a; p(a+10); p++) cout *p; ⑤、在程序运行期间,要始终注意指针变量当前所指向的是哪一个元素; 小结 数组第 i 个元素地址的表示方法: a[i], a+i, p+i, p[i] 数组第 i 个元素的表示方法: a[i], *(a+i), *(p+i), p[i] 1、引用一个数组元素的两种方法: ①、下标法:用a[i]或p[i]来引用数组a中的第i号元素; ②、指针法:用*(p+i)或*(a+i)来引用数组中的第i号元素; 可见:任何由数组下标完成的操作都能由指针来实现; a[i] *(p+i) a[i] p+i 2、注意指针变量的运算: 若p指向数组的开始,即:p=a; Ⅰ、p++; 使p指向下一元素,即a[1]; Ⅱ、*p++; 等价于*(p++); for (i=0,p=a; i10; i++) cout *p++; Ⅲ、注意*(p++)与*(++p)的区别; Ⅳ、(*p)++表示p所指向的元素值加1; Ⅴ、若指针变量指向数组的第i号元素,则: *(p--)相当于a[i--] *(--p)相当于a[--i] *(++p)相当于a[++i] 例 5.4.1 分别用下标法、指针法、位移法输入、输出数组元素。 #includeiostream.h void main( ) { int a[10], i;  for (i=0; i10; i++) cina[i];  coutendl;  for (i=0; i10; i++) couta[i]; 

文档评论(0)

xiaofei2001128 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档