C语言教程课件Ch10-4字符串指针.ppt_第1页
C语言教程课件Ch10-4字符串指针.ppt_第2页
C语言教程课件Ch10-4字符串指针.ppt_第3页
C语言教程课件Ch10-4字符串指针.ppt_第4页
C语言教程课件Ch10-4字符串指针.ppt_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

10.1 指针的概念 10.2 变量的指针和指向变量的指针变量 10.3 数组的指针和指向数组的指针变量 10.4 字符串的指针和指向字符串的指针变量 10.5 函数的指针和指向函数的指针变量 10.6 返回指针的函数 10.7 指针数组和指向指针的指针 10.8 有关指针的数据类型和指针运算的小结,一、字符串的表示形式 1字符数组:存放字符串。 例:void main( ) static char string =“I Love China!“; printf(“%sn“,string); 2字符串指针变量:指向字符串。 例:void main( ) char *string=“I Love China!“; printf(“%sn“,string); ,10.4 字符串的指针和指向字符串的指针变量,void main ( ) static char a=“I am a boy.“,b20; int i; for (i=0;*(a+i)!=0;i+) *(b+i)=*(a+i); *(b+i)=0; printf (“string a is :%sn“,a); printf (“string b is :%sn“,b); ,例1: 将字符串a复制到字符串b中。,方法1:,void main ( ) char a =“I am a boy.“, b20, *p1,*p2; p1=a;p2=b; for (;*p1!=0;p1+,p2+) *p2=*p1; *p2=0; printf (“string a is :%sn“,a); printf (“string b is :%sn“,b); ,方法2:,a,p1,p2,I,m,a,b,o,y,.,0,char *p1=“I am a boy.“,*p2;,二、字符串指针作函数参数,void copy_string(char from,char to) int i=0; while(fromi!=0) toi=fromi;i+; toi=0; ,void main() static char a =“I am a teacher.“; static char b =“You are a student.“; printf(“string_a=%snstring_b=%sn“,a,b); copy_string(a,b); printf(“string_a=%snstring_b=%sn“,a,b); ,例2:用函数调用实现字符串的复制。,方法1:,问: 对字符数组a与b 的长度有否限制 ?,方法2:,void copy_string(char *from,char *to) for(;*from!=0;from+,to+) *to=*from; *to=0; ,Y o u a r e a s t u d e n t . 0,void main( ) char *a=“I am a teacher.“; char *b=“You are a student.“; printf(“string_a=%snstring_b=%sn“,a,b); copy_string(a,b); printf(“string_a=%snstring_b=%sn“,a,b); ,a,b,from,to,I,a,m,a,t,a,e,c,h,e,r,.,0,例3: 有一个长度不大于40的字符串,已知其中总包 含两个字符“A“,求处于两个字符“A“中间的字符个数, 及这些字符.,int sub(char *x,char *y) int i,n=0; for(i=0;*(x+i)!=0;i+) if(*(x+i)=A) break; do i+; *(y+n)=*(x+i); n+;while(*(x+i+1)!=A); *(y+n)=0; return(n); ,void main( ) char a40,b40; int l; int sub(char *x,char *y); gets(a); l=sub(a,b); printf(“l=%dn“,l); printf(“%sn“,b); ,char *a=“I love china“; char *a ; a=“I love china“ ;,三、字符指针变量与字符数组的区别,字符指针变量中存放的是地址,绝决不是将字符串放到字符指针变量中。 赋初值的方式:对数组可以在变量定义时整体赋初值,但不能在赋值语句中整体赋值。,char str14=“I love China!; char str14; str =“I love China!”;,3指针变量可以指向一个字符型数据,但如果未 对它赋以一个地址值,则它并未具体指向哪一 个字符数据。 如: char *a; scanf(“%s“,a); 是错误的 4指针变量的值是可以改变的,而数组名所指的 地址是固定的。 如: main( ) char *a=“I love China!“; a=a+7; printf(“%s“, a); ,运行结果: China!,5用指针变量指向一个格式字符串。,如: void main( ) static char a =“I love China!“; a=a+7; printf(“%s“, a); 是错误的!,char *format; format=“a=%d,b=%fn“; printf(format,a,b);,printf(“a=%d,b=%fn“,a,b);,例4: 有两个字符串str1,str2, 编程序将str1,str2 中对应字符较大的放到数组str3中.,void main() char *str1=“Chinese“,*str2=“India“,str340; ccc(str1,str2,str3); puts(str3); ,str1 str2,str3,void ccc(char *s1,char *s2,char *s3) int i; for(i=0;*(s1+i)!=0 ,s1 s2 s3,I,n,i,n,e,s,e,0,void main(

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论