欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    C语言第13讲指针与字符串(字符数组).ppt

    • 资源ID:5850825       资源大小:1.11MB        全文页数:18页
    • 资源格式: PPT        下载积分:10金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要10金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    C语言第13讲指针与字符串(字符数组).ppt

    6.2.3 指针与字符串(字符数组),C语言用字符数组存放字符串。字符数组:元素个数确定,一般用下标控制循环。字符串:有效字符个数由0确定,用结束符0控制循环。,字符数组名和字符串的值都是地址(字符串的首地址),1、字符串的访问方法:直接引用字符串:,char*chp,ch=”abcde”;/*定义字符指针和字符数组*/chp=ch;/*指针指向字符数组*/putchar(*(chp+2);/*通过指针引用数组元素*/printf(“%s,%s”,ch+1,chp+2);,引用字符数组:,char*chp;/*说明字符指针*/chp=“Hello!”;/*指针指向字符串*/puts(chp);/*通过指针引用字符串*/,字符指针可直接指向字符串:char*chp=“Hello!”;,输出?,无名一维字符数组 0,例1:输出字符串,#include void main()char s=“computer”,*ps=s;while(*ps!=0)putchar(*ps);ps+;,main()char str80,*p,ch;int i=0;p=str;gets(p);ch=getchar();for(;*p!=0;p+)if(*p!=ch)stri+=*p;stri=0;printf(“The new string is:%sn”,str);,例2:在输入的字符串中删除指定的字符,2000H,p,0,ch,0,i,运行程序:abcdef c,2000H,str,c,str,printf(“%s”,ps);或:puts(ps),The new string is:abdef,字符指针(变量)与字符数组的区别,字符指针与字符数组:两者均可存储和运算字符串。主要区别:存储格式不同:字符指针变量中存放的是字符串的首地址(2字节);而字符数组中存放的是整个字符串(一个数组元素存放一个字符)。性质不同:字符数组名是地址常量,不能改变(指向首字符);字符指针是地址变量,可以改变(指向不同的字符)。赋值方式不同:,字符指针,char*ps=“Hello”;,char*ps;ps=“Hello”;,字符数组,char st=“Hello”;,char st80;st=“Hello”或:st=“Hello”,用循环逐个赋值或用strcpy()函数赋值,例:统计字符串中的各元音字母的个数(P182 例6.15),#includevoid main(void)char str80,*p;int a=0,e=0,i=0,o=0,u=0;gets(str);for(p=str;*p!=0;p+)switch(*p)case a:case A:a+;break;case e:case E:e+;break;case i:case I:i+;break;case o:case O:o+;break;case u:case U:u+;printf(a:%3dne:%3dni:%3dno:%3dnu:%3dn,a,e,i,o,u);,循环遍历数组元素,判断字母。,判断字符串是否结束,2.字符串指针做函数参数(见P183 表6-2),#includevoid cpystr(char*s1,char*s2)while(*s2!=0)*s1+=*s2+;*s1=0;void main(void)char str120,str2=123456abcdef;printf(str2:%sn,str2);printf(str1:%sn,str1);cpystr(str1,str2);printf(str2:%sn,str2);printf(str1:%sn,str1);,去掉该句,对程序结果是否有影响?,例:编写函数,用指针进行字符串的复制,6.2.4 指针数组,指针是存放其它数据对象地址的变量。也可以构成数组。每个数组元素均为一个指针变量,且在内存中连续存放。,1.指针数组定义,格式:type*数组名元素个数;,int*p 4;,定义(说明)p是含有4个元素的指针数组,每个元素都是一个指向整型变量的指针(二级指针)。,数组名p为数组的首地址。,使用前必须让各元素指向对象。,int i,a34,*p3;for(i=0;i3;i+)p i=a i;*(pi+j)=2;/*通过指针数组引用数组元素aij*/,2、用指针数组处理多字符串,例:用指针数组对字符串进行排序。,#include void main(void)int i,j;char*ps=Get,Put,Time,Date,*p;printf(排序前字符串:n);for(i=0;i0)p=psi;psi=psj;psj=p;printf(排序后字符串:n);for(i=0;i4;i+)puts(psi);,循环实现排序,ps,2、指针数组访问二维数组,通过指针数组输出数组元素的值,分析运行结果。,#include void main()int i,j;int a33=1,2,3,4,5,6,7,8,9;int*pa3=a0,a1,a2;int*p=a0;for(i=0;i3;i+)for(j=0;j3;j+)printf(%5d,paij);printf(n);for(i=0;i3;i+)printf(%d,%d,%dn,ai2-i,*ai,*(*(a+i)+i);for(i=0;i3;i+)printf(%d,%d,%dn,*pai,pi,*(p+i);,pa0,数组a的二维结构,pa1,pa2,a0,a1,a2,6.3 指针与函数,6.3.1 指向函数的指针概念:函数为程序实体,其代码占据连续的内存地址,其首地址称为函数的入口地址,用函数名表示。C语言通过指针指向函数的入口地址(函数名),也可以实现函数的调用。,c=max(a,b);,int max(int x,int y)return(x=y?x:y);,2400H,函数指针变量的定义:,type(*p)();,函数的类型。,指针变量名,函数,使用步骤:,定义函数fname和指向函数的指针p;指针指向函数;p=fname;通过指针引用函数。格式:(*p)(实参表);,main(),举例:求a、b的最大值。,#include int lmax(int,int);void main(void)int a,b,c;int(*funp)();funp=lmax;scanf(“%d,%d”,说明指向函数的指针。,指针指向函数。,funp,lmax,通过指针引用函数。,lmax,2100H,2100H,6.3.2 返回指针的函数,概念:函数可以返回一个值,也可以返回一个地址(指针),如果函数返回指针,称为返回指针的函数。,定义:type*函数名(形参表)/*函数体*/,int*max(int a,int b),注意:int(*p)()和 int*p()的区别:int(*p)()是定义一个 变量(p是一个指向函数入口的指针变量);int*p()则是定义一个函数(p是一个返回值为指针的函数),它还有函数体部分。,例:输入一个17之间的整数,输出对应的星期名。,char*day_name(int n)char*name=“Illegal day”,”Monday”,”Tuesday”,”Wednesday”,“Thursday”,”Friday”,”Saturday”,”Sunday”;return(n7)?name0:namen);#include main()int i;printf(“Input Day No:n”);scanf(“%d”,定义一个指针型函数,其返回值指向一个字符串,形参 n 为星期名对应的整数,exit为一库函数,exit(1)有错退出程序,exit(0)正常退出,name为一指针数组,每个元素均为指针变量。,运行结果:,Input Day No:2Day No:2-Tuesday,6.3.3 main函数的参数,如DOS命令:C:test aa bb cc,可执行文件名,命令参数,主函数main()也可以带参数,由于main()不能被其他函数调用,故无法在程序内部取得实参值。它的参数来自dos提示符命令行(如用命令行运行编译连接好的.exe文件),实参就是命令行输入的字符串。主函数一般有两个参数。,void main(int argc,char*argv)(函数体),整型变量。存放命令行字符串的个数(以空格分隔)。,指向字符的指针数组。分别存放各字符串参数的地址。,举例:编程显示命令行输入的参数。,#include void main(int argc,char*argv)int i;printf(argc=%dn,argc);for(i=0;iargc;i+)printf(argv%d=%sn,i,argv i);,test How are you?(该程序名应为test.c,编译、连接后生成test.exe),C:,argc 4,*举例:在字符串中查找特定的字符。,#include#include char*lstrchar(char*,char);void main(void)char c,*p,str80;gets(str);scanf(“%c”,返回指针的函数。,指向空!,课堂作业:,#includemain()int i;char s5,*p;for(i=0;is;p-)printf(%s,%cn,p,*p);,写出下列程序运行结果。,#includeint f(int*a,int n)if(n1)return*a+f(a+1,n-1);else return*a;void main()int aa10=1,2,3,4,5,6,7,8,9,10,s;s=f(aa+1,4);printf(%dn,s);,思考题:,作业题:,p188习题 一、选择题 720。二、填空题 47。三、程序运行题13。四、程序填空题2、4。五、程序设计题 2、3、6。,上机验证 p178 例 6.19,分析行指针定义(*p)n和指针数组定义*pn的异同点,进一步理解和记忆二维数组中数组元素和其地址的表示方法。,编程题:,#include#define N 3void ss(int c3,int*s1,int*s2);void main(void)int aNN,bN;int i,j,k,sum1,sum2;for(i=0;iN;i+)for(j=0;jN;j+)scanf(%d,用指针编写函数分别求二维方阵主、辅对角线上元素的和 sum1 和 sum2。要求:在主函数中输入a44,通过函数用指针求a44主、辅对角线元素的和。见 ktzyss.c,

    注意事项

    本文(C语言第13讲指针与字符串(字符数组).ppt)为本站会员(sccc)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开