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

C语言课件第10节_指针.ppt

  1. 1、本文档共127页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第十章 表示复杂的数据结构 动态分配内存 有效地使用字符串、数组 在调用函数时能得到多个返回值 能直接处理内存地址 §10.1地址和指针的概念 §10.2 变量的指针和指向变量的指针变量 1. *pointer_1 等价于 a 即先进行*pointer_1运算,得到变量a,再执行运算。 2. *a 等价于 *pointer_1 等价于 a 即先进行a 运算,得到a的地址,再执行*运算 3. (*pointer_1) ++ 等价于 a++ *pointer_1 ++ 等价于 ① *pointer_1 ② pointer_1++ 是否可以将函数swap()改写成如下形式?不能。 swap(int *p1,int *p2)  { int*temp;    *temp=*p1;  /* temp定义后并未被赋值,直接将p1所指变量赋给它,不妥。 */  p1=*p2;   p2=*temp;    } 能否通过下面的函数实现a和b互换?不能。 swap(int x,int y)  { int temp;    temp=x;    x=y;    y=temp; } 函数调用时,a的值传送给x,b的值传送给y。函数执行完后,x和y的值是互换了,但a和b并未互换。 能否通过下面的函数实现a和b互换?不能。 swap(int *p1,int *p2) { intp;    p=p1;    p1=p2;     p2=p;   } 数组的指针是指数组的起始地址。 数组元素的指针是指数组元素的地址。 使用指针变量指向数组元素应注意的问题: 1. 可改变指针变量的值,不可改变指针常量的值: 2. 注意指针变量的当前值 3. p可以指向数组以后的内存单元,如p=a[10](按*(a+10)处理); 但会得不到预期的结果。应保证指针指向数组中有效的元素。 4. 注意指针变量的运算 设p指向数组a(即p=a),则: 4)(*p)++: p所指向的元素值加1,即(a[0])++。 5)设p=a[i],则: *(--p) = a[--i],先使p-1=p,再取*p得到a[i-1] 。 *(p--) = a[i--],先取*p得到a[i] ,再使p-1=p 。 *(++p) = a[++i],先使p+1=p ,再取*p得到a[i+1] 。 例如: main() { int i,*arr; printf(The original array:\n); for(i=0;i<10;i++) scanf(%d,arr+i); printf(\n); inv(arr,10); /*实参为指针变量,但未被赋值*/ … } 编译时出错,原因是指针变量arr没有确定值,谈不上指 向哪个变量。 a与a[0]的值虽相同,但由于指针类型不同: a: 二维数组名,指向行 a[0]; a[0]:一维数组名,指向列元素 a[0][0]。 故 a+1 ≠ a[0]+1 ① int a[4] ; // a为数组名,有4个整型元素 ② int (*p)[4]; // *p为数组名,有4个整型元素 这4个元素分别为: (*p) [0] , (*p) [1] , (*p) [2] , (*p) [3] 图 10.29 对应于a[0][0]…a[0][3],a是二维数组名,故p是行指针,指向二维数组的每一行。如图10.30。 ∴ *(p + i) + j 是a数组第i行第j列元素的地址。 即 *(*(p + i) + j) 是 a[i][j] 的值。 10.8.2 指针运算小结 1. 指针变量加(减)一个整数,如: p++、p - -、p+i、p-i、p+=i、p-=i 是将指针变量的原值与它所跨过的内存单元字节数相加(减)。 如 p+i 代表地址:p+C*i。

您可能关注的文档

文档评论(0)

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

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

1亿VIP精品文档

相关文档