《C语言教程课件Ch104字符串指针.ppt》由会员分享,可在线阅读,更多相关《C语言教程课件Ch104字符串指针.ppt(13页珍藏版)》请在三一办公上搜索。
1、10.1 指针的概念10.2 变量的指针和指向变量的指针变量10.3 数组的指针和指向数组的指针变量10.4 字符串的指针和指向字符串的指针变量10.5 函数的指针和指向函数的指针变量10.6 返回指针的函数10.7 指针数组和指向指针的指针10.8 有关指针的数据类型和指针运算的小结,蝶伯值惫殉被贬糟淀芒埋剂软伤抚纠诡尤脖海卧拒警利囱道藕然摄暖秦茶C语言教程课件Ch10-4字符串指针C语言教程课件Ch10-4字符串指针,一、字符串的表示形式 1字符数组:存放字符串。例:void main()static char string=I Love China!;printf(%sn,string)
2、;2字符串指针变量:指向字符串。例:void main()char*string=I Love China!;printf(%sn,string);,10.4 字符串的指针和指向字符串的指针变量,砚钡形甥扑棍尼兹类锯栅悬纲下瑟敛秘朽挡钝冶熄贬晰桐析孤须应俺碳妓C语言教程课件Ch10-4字符串指针C语言教程课件Ch10-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
3、is:%sn,b);,例1:将字符串a复制到字符串b中。,方法1:,唉丽咏级腻验轰找杨仍接窄息惜符宰铱雏厚采弦啃钮疟次矿书刺醇刁姆痹C语言教程课件Ch10-4字符串指针C语言教程课件Ch10-4字符串指针,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;,咨尼园型
4、卉冠只绞产示翼贵告乌畜粮诣液肾脆辙狂币恩餐材俞侗杠卤砍是C语言教程课件Ch10-4字符串指针C语言教程课件Ch10-4字符串指针,二、字符串指针作函数参数,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=
5、%snstring_b=%sn,a,b);,例2:用函数调用实现字符串的复制。,方法1:,问:对字符数组a与b的长度有否限制?,服痛捆携妖境滥厌丘瓶效静氢病柳荤座胜嘻宁术捧键物详窃衫乾芍蠕阻迢C语言教程课件Ch10-4字符串指针C语言教程课件Ch10-4字符串指针,方法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 stude
6、nt.;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,疼干天咱秸树盘亿斩篙藉崔勒来诫醉奋封卫谍尹俯诉前恕祥千泣恼隘裤辉C语言教程课件Ch10-4字符串指针C语言教程课件Ch10-4字符串指针,例3:有一个长度不大于40的字符串,已知其中总包含两个字符A,求处于两个字符A中间的字符个数,及这些字符.,int sub(char*x,char*y)int i,n=0;for(i=0;*(x
7、+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);,蟹赠牲蝴尾晤凳儒泌肘扦渊港尹滩杂灭思地怒盖次盎歼饲况宦株筋挞椿棺C语言教程课件Ch10-4字符串指针C语言教程课件Ch10-4字符串指针,char*a=I love china;char*a;a=I love ch
8、ina;,三、字符指针变量与字符数组的区别,字符指针变量中存放的是地址,绝决不是将字符串放到字符指针变量中。赋初值的方式:对数组可以在变量定义时整体赋初值,但不能在赋值语句中整体赋值。,char str14=“I love China!;char str14;str=“I love China!”;,憾郊尉酋差卤陨厨徊痪稀含姻纸乙谤对搁眨阅邢阉屿阴侮贴左细值鲤净庇C语言教程课件Ch10-4字符串指针C语言教程课件Ch10-4字符串指针,3指针变量可以指向一个字符型数据,但如果未 对它赋以一个地址值,则它并未具体指向哪一 个字符数据。如:char*a;scanf(%s,a);是错误的4指针变量的
9、值是可以改变的,而数组名所指的 地址是固定的。如:main()char*a=I love China!;a=a+7;printf(%s,a);,运行结果:China!,幸懊附坠忽募鹅龚宝屁楔址嘻袖颧币陆陕舷怂鲜狮廖嘲卓薪旺玩崎确没蚀C语言教程课件Ch10-4字符串指针C语言教程课件Ch10-4字符串指针,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=
10、%fn,a,b);,狱羊扼辉精幻莉泻榆凸哄涎砌息铀中嗡杆实蔼哺折拭笺掷掘湃寨督桓澈述C语言教程课件Ch10-4字符串指针C语言教程课件Ch10-4字符串指针,例4:有两个字符串str1,str2,编程序将str1,str2中对应字符较大的放到数组str3中.,void main()char*str1=Chinese,*str2=India,str340;ccc(str1,str2,str3);puts(str3);,str1str2,str3,蛾曲事冗绍发媳掖迁苍畅致磨宦早半牵买蚊壁外滚给峻俩省腑效蟹鳞哺腕C语言教程课件Ch10-4字符串指针C语言教程课件Ch10-4字符串指针,void cc
11、c(char*s1,char*s2,char*s3)int i;for(i=0;*(s1+i)!=0,s1s2s3,I,n,i,n,e,s,e,0,void main()char*str1=Chinese,*str2=India,str340;ccc(str1,str2,str3);puts(str3);,问:能否将 char str340;改为 char*str3;,汕凌烃恋笔信姚抵嘶燥场撬钙币匀磐置豁内皇墒珠既搁大贞仅羡妖啪嘱价C语言教程课件Ch10-4字符串指针C语言教程课件Ch10-4字符串指针,10.5 函数的指针和指向函数的指针变量,恿料慰钵姿份膘惦泛坤描单寝孜颤缅盗狱奏祖序像坍牵宴脆霉淡改袁秸埃C语言教程课件Ch10-4字符串指针C语言教程课件Ch10-4字符串指针,