Chapter7数组 2.ppt

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

2.指针运算 指针变量可以加减一个整数,两个同类型指针可以 相减 得到一个整数。指针变量每增减1, 地址值增减量等于所指向 的变量类型的字节数sizeof(type), 将它称作地址步进单位d。 当指针变量指向数组元素时, 指针变量每加减1,表示指针前 后移动1个元素, 地址值增减d。 如: int a[10],*p; p=a; p++; p+=3; * #includestdio.h main() { int x[5]={0,1,2,3,4},*p; p=x; printf(%x,%x,%x\n,x,p,p+1); printf(%d,%d,%d\n,*x,*p,*(p+1)); } 注意: 指针变量的运算顺序。 ++*p,*p++,*(++p),(*p)++ 四者之间的差别: ++*p 先给p指向的变量加1,然后取其值 (*p)++ 先取p指向的变量值, 然后该变量值加1 *p++ 取p所指向变量的值, 然后p增1 *(++p) P先增1, 然后取p所指向变量的值 * main() {int a[4]={1,2,3,4},b,c,d,e; int *p=a; b=*p++; printf(“\n%d,%d,”,b,*p); c=*++p; d=++*p; printf(“%d,%d”,c,d); } 运行结果 1,2,3,4 * 3. 通过指针访问数组元素 在 int a[10],*p=a; 定义的情况下: (1) p+i或a+i就是a[i]的地址。都要进行a+i×d的运算。 (2) *(p+i)或*(a+i)就是p+i或a+i所指向的数组元素a[i]。 数组元素中的 “[ ]” 是变址运算符, 相当于*( + ) , a[i] 相当于*(a+i)。 (3) 指向数组元素的指针变量也可带下标, 如 p[i]与*(p+i)等价。 所以, a[i],*(a+i) ,p[i],*(p+i) 四种表示法全部等价。 (4) 注意p与a的差别:p是变量,a是符号常量,不能给a赋值, 语句a=p; a++; 都是错的。 * p a[0] a[9] a[1] a[2] a[i] a[0] p+1,a+1 p+2,a+2 p+i,a+i p+9,a+9 a 引用数组元素可用: 1)下标法,如a[i],p[i]。 2) 指针法,如*(p+i)或*(a+i),其中p是指向数组a的元素的指针变量。 * main( ) { int a[10]; int *p,i; for(p=a;p(a+10);p++) scanf(%d, p); printf(\n); ? for(i=0;i10;i++) printf(%d, a[i]); } ① for(i=0;i10;i++) printf(%d, *(a+i)); ② p=a; /*不能省略*/ for(i=0;i10;i++,p++) printf(%d, *p); ③ for(p=a;p(a+10);p++) printf(%d,*p); 例.输入/输出数组全部元素 * 7.4.2 字符指针、字符数组和字符串 【例9.5】用字符型数组名和字符指针变量 两种方法整体输入/输出字符串。 main() { char s[81]=Hello!,*p=s; char *ps=Welcome to you!; printf(%s\n,s); printf(%s\n,ps); gets(s); printf(%s\n,s); gets(p); printf(%s\n,s); } * 字符指针变量和字符数组的区别 (1) 存储的内容不同: 字符数组存储着字符串的内容, 而字符指针变量 存放的是字符串首元素的地址,不是它的内容。 (2) 分配的内存单元不同: 字符数组分配一段有确定地址的内存。而指针变 量只分配存放地址的内存单元,该指针变量可以 指向一个字符型数据,但若未赋初值,则它并未指向 一个明确的地址。此时它指向的变量并不存在。 * (3) 赋值方法不同: 对字符数组只能在定义时整体赋初值, 不能用赋值语句 整体赋值。赋值语句只能对各个元素分开赋值。 如: char

文档评论(0)

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

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

1亿VIP精品文档

相关文档