网站大量收购独家精品文档,联系QQ:2885784924

第11讲 指针.ppt

  1. 1、本文档共58页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第11讲 指针

第八章 §8.1 指针的概念 §8.2 指针变量的定义和引用 8.2.2 指针函数 8.2.3 指向函数的指针 §8.3 指针与数组 §8.4 指针与字符串 §8.5 指针与多维数组 §8.6 本章小结 本章作业一 总之:设d是一个数组元素所占的字节数,则p+i表示指针移动了i个元素,而它实际的地址变化为:p+i*d。 3、在使用指针变量引用数组时,应注意以下问题: ①、给指针赋初值的方法: p=a; 或  p=a[0]; ②、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]; 综上,可以用两种方法来引用一个数组元素: ①、下标法:用a[i]或p[i]来引用数组a中的第i号元素; ②、指针法:用*(p+i)或*(a+i)来引用数组中的第i号元素; 可见:任何由数组下标完成的操作都能由指针来实现; a[i] *(p+i) a[i] p+i 4、在使用指针变量时,要注意以下几个问题: ①、可以使用p++使指针变量p的值不断改变: for (p=a; p(a+10); p++) printf(%4d, *p); for (p=a; a(p+10); a++) printf(%4d, *a); ②、在程序运行期间,要始终注意指针变量当前所指向的是哪一个元素;   可以执行p++等操作使p指向不同的数组元素,通过*p访问不同的数组元素。但要始终注意p当前所指向的是哪一个数组元素! 通过指针在函数间传递一维数组: C编译系统都是将形参数组名作为指针变量来处理的。 f(int x[ ], int n); f(int *x, int n); 可以通过x[i]、*(x+i)来访问实参数组元素。 要求实参为指向数组首元素的指针: a 或 p f(a, 10); f(p, 10); (p=a;) 小结 int a[10], *p; p=a; 或 p=a[0]; p为指向数组元素的指针   C语言规定:数组名表示数组的首地址,即第0个元素的地址;即数组名是指向数组第0个元素的指针常量。 a+i p+i 表示数组第 i 个元素的地址(a[i]),即指向第 i 个元素的指针 *(a+i) *(p+i) 表示数组的第 i 个元素(a[i]) a[i] p[i] 表示数组的第 i 个元素(a[i]) 数组第 i 个元素地址的表示方法: a[i], a+i, p+i, p[i] 数组第 i 个元素的表示方法: a[i], *(a+i), *(p+i), p[i] 8.3.3 通过指针在函数间传递一维数组 1、数组元素作为函数参数: void swap(int x, int y); swap(a[1], a[2]); 2、数组名作为函数参数: void f(int x[ ], int n); f(a, 10);   数组名代表数组首地址。用数组名作实参,调用函数时是把数组首地址传递给形参,而不是把数组的值传给形参。 a[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9] a x x[0] x[1] x[2] x[3] x[4] x[5] x[6] x[7] x[8] x[9]   实际上能够接受并存放地址值的只能是指针变量,C编译系统都是将形参数组名作为指针变量来处理的。 void f(int *x, int n); x[i] *(x+i)   若在函数调用期间改变了数组某一存储单元的内容,则在函数调用完毕后,已改变的值被保留下来。 变量名与数组名作函数参数时的比较: 能否改变实参的值 传递的信息 要求形参的类型 数组名 变量名 实参类型 变量名 变量的值 不能 数组名或指针变量 数组的起始地址 能 需要说明的是:   C语言的函数调用都是采用“值传递”方式;当用变量名作函数参数时传递的是变量的值;用数组名作函数参数时,由于数组名代表的是数组首地址,因此传递的是数组首地址,所以要求形参为指针变量。 例题:有一个一维数组score,内放10个学生成绩,求平均成绩。 3、指针变量可替代数组名作为函数的参数: ①、指针变量可以作为函数的形参; ②、指针变量可以作为函数的实参; 归纳起来,实参与形参的对应关系有: ①、形参和实参都用数组名: f(int x[ ], int n); f(a, 10); 把实参数组首地址传给形参作为形参数组首地址; ②、实参用数组名,形参用指

文档评论(0)

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

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

1亿VIP精品文档

相关文档