已阅读5页,还剩13页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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:输出字符串,#includevoidmain()chars=“computer”,*ps=s;while(*ps!=0)putchar(*ps);ps+;,main()charstr80,*p,ch;inti=0;p=str;gets(p);ch=getchar();for(;*p!=0;p+)if(*p!=ch)stri+=*p;stri=0;printf(“Thenewstringis:%sn”,str);,例2:在输入的字符串中删除指定的字符,2000H,p,0,ch,0,i,运行程序:abcdefc,2000H,str,c,str,printf(“%s”,ps);或:puts(ps),Thenewstringis:abdef,字符指针(变量)与字符数组的区别,字符指针与字符数组:两者均可存储和运算字符串。主要区别:存储格式不同:字符指针变量中存放的是字符串的首地址(2字节);而字符数组中存放的是整个字符串(一个数组元素存放一个字符)。性质不同:字符数组名是地址常量,不能改变(指向首字符);字符指针是地址变量,可以改变(指向不同的字符)。赋值方式不同:,字符指针,char*ps=“Hello”;,char*ps;ps=“Hello”;,字符数组,charst=“Hello”;,charst80;st=“Hello”或:st=“Hello”,用循环逐个赋值或用strcpy()函数赋值,例:统计字符串中的各元音字母的个数(P182例6.15),#includevoidmain(void)charstr80,*p;inta=0,e=0,i=0,o=0,u=0;gets(str);for(p=str;*p!=0;p+)switch(*p)casea:caseA:a+;break;casee:caseE:e+;break;casei:caseI:i+;break;caseo:caseO:o+;break;caseu:caseU:u+;printf(a:%3dne:%3dni:%3dno:%3dnu:%3dn,a,e,i,o,u);,循环遍历数组元素,判断字母。,判断字符串是否结束,2.字符串指针做函数参数(见P183表6-2),#includevoidcpystr(char*s1,char*s2)while(*s2!=0)*s1+=*s2+;*s1=0;voidmain(void)charstr120,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*p4;,定义(说明)p是含有4个元素的指针数组,每个元素都是一个指向整型变量的指针(二级指针)。,数组名p为数组的首地址。,使用前必须让各元素指向对象。,inti,a34,*p3;for(i=0;i3;i+)pi=ai;*(pi+j)=2;/*通过指针数组引用数组元素aij*/,2、用指针数组处理多字符串,例:用指针数组对字符串进行排序。,#includevoidmain(void)inti,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、指针数组访问二维数组,通过指针数组输出数组元素的值,分析运行结果。,#includevoidmain()inti,j;inta33=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;iTuesday,6.3.3main函数的参数,如DOS命令:C:testaabbcc,可执行文件名,命令参数,主函数main()也可以带参数,由于main()不能被其他函数调用,故无法在程序内部取得实参值。它的参数来自dos提示符命令行(如用命令行运行编译连接好的.exe文件),实参就是命令行输入的字符串。主函数一般有两个参数。,voidmain(intargc,char*argv)(函数体),整型变量。存放命令行字符串的个数(以空格分隔)。,指向字符的指针数组。分别存放各字符串参数的地址。,举例:编程显示命令行输入的参数。,#includevoidmain(intargc,char*argv)inti;printf(argc=%dn,argc);for(i=0;i,argc4,*举例:在字符串中查找特定的字符。,#include#includechar*lstrchar(char*,char);voidmain(void)charc,*p,str80;gets(str);scanf(“%c”,返回指针的函数。,指向空!,课堂作业:,#includemain()inti;chars5,*p;for(i=0;is;p-)printf(%s,%cn,p,*p);,写出下列程序运行结果。,#includeintf(int*a,intn)if(n1)return*a+f(a+1,n-1);elsereturn*a;voidmain()intaa10=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#defineN3voidss(intc3,int*s1,int*s2);voi
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 公益活动形象宣传大使合同
- 保险公司法务专员招聘协议
- 社会组织暂行管理办法
- 拆迁补偿安置
- 培训社区防疫知识与技能
- 博物馆消防工程升级合同
- 在线旅游平台风险管理
- 环卫垃圾处理机械租赁协议
- 玩具公司续租合同样本
- 影楼员工招聘协议
- 2024年消防月主题培训课件:全民消防 生命至上(含11月火灾事故)
- 人教版(2024年新版)七年级数学上册期中模拟测试卷(含答案)
- 中国移动铁通公司招聘笔试题库2024
- 医院培训课件:《静脉中等长度导管临床应用专家共识》
- 榆能集团笔试考什么
- 2024广西公需课高质量共建“一带一路”谱写人类命运共同体新篇章答案
- 2024年连云港专业技术人员继续教育《饮食、运动和健康的关系》92分(试卷)
- 学习总结报告成果展示
- 推理公式、华东特小流域 计算设计频率洪水、洪量
- 采煤机(掘进机)操作工实操考核评分表(采煤机)
- 人工破膜评分表
评论
0/150
提交评论