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

[IT认证]C语言程序设计第15讲2011级.ppt

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

第八章 指针 8.3 通过指针引用数组 在C语言中指针与数组的关系十分密切。 数组中的元素是在内存中连续排列存放的,所以任何用数组下标完成的操作都可以通过指针的移动来实现。 使用数组指针的主要原因是操作方便,编译后产生的代码占用空间少,执行速度快,效率高。 8.3 通过指针引用数组 由于数组名可以代表数组的首地址。因此,下面的两种表示是等价的: a,&a[0] 8.3 通过指针引用数组 #include stdio.h main() {int a[4]={1,2,3,4},i; for(i=0;i4;i++) printf(a[%d]=%d ,i,*(a+i)); printf(\n);} 运行结果为: a[0]=1 a[1]=2 a[2]=3 a[3]=4 8.3 通过指针引用数组 内存中的值 a→a[0] 1 ← *a a+1→a[1] 2 ← *(a+1) a+2→a[2] 3 ← *(a+2) a+3→a[3] 4 ← *(a+3) 8.3 通过指针引用数组 数组名a表示该数组的首地址,通过数组名a可以得到其它元素的地址。数组名就是数组的指针。 —个数组的名字实际上是一个指针表达式,所以数组名a就是一个指向数组a中第1个元素的指针,当计算中出现a[i]时,c编译立刻将其转换成*(a+i),这两种形式在使用上是等价的,因此,例中的*(a+i)实际上就是a[i]。 8.3 通过指针引用数组 4.当情况复杂时,注意分析: 若有以下说明, int array[7]={1,2,3,4,5,6,7}; 则array[*(array+array[3]+1)]的值为: 8.3 通过指针引用数组 注意: 1.指针变量可以实现使本身的值改变,但数组名不行。p=a+3; p++;但a=p+3;a++是错误的。 8.3 通过指针引用数组 2. 注意指针的当前值 int *p,i,a[10]; p=1; for (i=0;i10;i++) scanf(%d”,p++); for (i=0;i10;i++) printf(%d”,*p); 8.3 通过指针引用数组 3. 注意指针变量的运算(p=array) p++;*p *p++?*(p++)先取出*p值,后使p+1 *++p?*(++p)先使p+1,后取出*p值 (*p)++?p指向的元素值加1 用字符数组和字符指针都能实现对字符串的存储和运算,而且在很多时候使用方法一样,但二者之间是有区别的,不能混为一谈。主要区别有: (1)字符数组是由若干个元素组成,每个元素存放一个字符,而字符指针是一个指针变量,变量中只保存一个字符的地址(初始化时是字符串的首地址)而不是整个字符串。 (2)赋值方式不同。对字符数组的赋值只能对各个元素分别赋值,而对字符指针只用赋给字符串的首地址就可以了. char *str; str=Welcome to study C program language!; 以下对字符数组的赋值是错误的: char str[80]; str[]=Welcome to study C program language!; (3)字符指针占用的内存要少于字符数组。字符指针只是在程序运行中被临时赋予一字符串的首地址,而字符数组在程序被编译时就要为每个数组元素分配内存地址,而且必须用字符数组可能存放字符的最大数目作为数组的大小,尽管有可能在大多数时候该数组只用到其占用的内存中的一部分. (4)指针变量的值在程序运行中可以被改变,但字符数组的地址是不能被改变的。指针变量所指向的地址在程序中可以根据需要灵活地变化,而数组名永远代表该数组的首地址,而且是在程序一开始运行就被分配好的,在程序运行后不会变化. 8.4. 通过指针引用字符串 8.4. 通过指针引用字符串 * * * Program Design in C Language Page * 第十五讲 通过指针引用数组 通过指针引用字符串 数组的指针:数组的首地址。 一维数组的指针:一维数组的首地址,也就是一维数组中第一个元素的地址。 C语言规定:数组名代表数组的首地址。 若有:int a[10]; 则:a 与 &a[0] 是等价的 数组元素的指针:数组元素的地址。 指向一维数组元素的指针变量:存放一维数组首地址或数组元素地址的变量。 8.3 通过指针引用数组 一维数组的首地址加上偏移量x即可得到其他数组元素的地址。 例如: int a[10], *p; p=a; /* 等价于 p=a[0] */ 则有: a[1] 等价于 a+1 或 p+1 a[i] 等价于 a+i 或

文档评论(0)

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

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

版权声明书
用户编号:6212135231000003

1亿VIP精品文档

相关文档