C语言回顾指针.pptVIP

  1. 1、本文档共24页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
字符指针 讲授人:周俏丽 变量 指针 数组 数组的首地址赋予指向数组的指针变量。 例如:int a[5] , *pa; pa = a; (数组名表示数组的首地址,故可赋予指向数组的指针变量pa) 也可写为: pa=a[0]; /*数组第一个元素的地址也是整个数组的首地址,也可赋予pa*/ ⑤把字符串的首地址赋予指向字符类型的指针变量。例如:char *pc;pc=c language; 这里应说明的是并不是把整个字符串装入指针变量, 而是把存放该字符串的字符数组的首地址装入指针变量。 ⑥做为函数的实参和形参。 main() { char *pc,*pb; pc=c language; strcpy(pc,pb); } 字符指针变量和字符数组的区别 字符数组由若干个元素组成,每个元素中放一个字符,而字符指针变量中存放的是地址(字符串的首地址),决不是将字符串放到字符指针变量中. char c[10]; char *p; 2.赋值方式 字符数组 char str[14]; str=“I love China!” (错误) char str[14]=“I love China!”; (正确) 字符指针 char *a; a=“I love China!”; a不是字符,而是字符串的首地址; 3.对字符指针变量赋初值 char *a =“I love China!”;等价于 char *a; a=“I love China!”; 而对数组的初始化: char str[14]=“I love China!”;不能等价于 char str[14]; str=“I love China!” 数组可以在变量定义时整体赋初值,但不能在赋值语句中整体赋值. 4.分配内存 如果定义了一个字符数组,在编译时为它分配内存单元,它有确定的地址.而定义一个字符指针变量时,给指针变量分配内存单元,在其中可以放一个地址值,也就是说,该指针变量可以指向一个字符型数据,但如果未对它赋予一个地址值,则它并未具体指向一个确定的字符数据. char str[10]; scanf(“%s”, str); char *a; scanf(“%s”, a); char *a, str[10]; a=str; scanf(“%s”,a); 5.指针变量的值是可以改变的 Main() { char *a=“I love China!”; a=a+7; printf(“%s”,a); } 运行结果如下: China! 数组名是不能改变的 char str[ ]={“I love China!”}; str=str+7; printf(“%S”,str); (错误) 若定义了一个指针变量,并使它指向一个字符串,就可以用下标的形式引用指针变量所指的字符串中的字符 main() { char *a=“I love China!”; printf(“The sixth charcter is %c\n”,a[5]); } 运行结果如下: The sixth charcter is e 程序中虽然并未定义数组a,但字符串在内存中是以字符数组形式存放的.a[5]按*(a+5)执行,取出其单元中的值. 6.用指针变量指向一个格式字符串,可以用它代替printf函数中的格式字符串 char * format; format=“a=%d,b=%f\n”; printr(format,a,b); 它相当于: printf( “a=%d,b=%f\n”,a,b); 但是不能采用赋值语句对数组整体赋值 char format[ ] =“a=%d,b=%f\n”; printf(format,a,b);(错误) 指针的加减算术运算 对于指向数组的指针变量,可以加上或减去一个整数n。 例如:设pa是指向数组a的指针变量, 则 pa+n, pa-n, pa++, ++pa, pa--, --pa; 运算都是合法的。 应该注意,数组指针变量向前或向后移动一个位置和地址加1或减1 在概念上是不同的。因为数组可以有不同的类型, 各种类型的数组元素所占的字节长度是不同的。如指针变量加1,即向后移动1 个位置表示指针变量指向下一个数据元素的首地址。而不是在原地址基础上加1。 例如: int a[5],*pa; pa=a; /*pa指向数组a,也是指向a[0]*/ pa=pa+2; /*pa指向a[2],即pa的值为pa[2]*/ 注:指针变量的加减运算只能对数组指针变量进行, 对指向

文档评论(0)

118books + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档