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

6.2.3 指针与字符串(字符数组) C语言用字符数组存放字符串。 字符数组元素个数确定,一般用下标控制循环。 字符串有效字符个数由0确定,用结束符0控制循环。, 字符数组名和字符串的值都是地址(字符串的首地址 ,1、字符串的访问方法 直接引用字符串,char *chp,ch ”abcde”; /*定义字符指针和字符数组*/ chpch; /*指针指向字符数组*/ putchar *chp2; /*通过指针引用数组元素*/ printf“s,s”,ch1,chp2;, 引用字符数组,char *chp; /*说明字符指针*/ chp“Hello”; /*指针指向字符串*/ putschp; /*通过指针引用字符串*/,字符指针可直接指向字符串char *chp“Hello”;,输出 ,无名一维字符数组 0,例1 输出字符串,include void main char s “computer”, *pss ; while*ps0 putchar*ps; ps; ,main char str80, *p, ch; int i0; pstr; getsp; chgetchar; for ; *p0;p if*pch stri*p; stri0; printf“The new string issn”,str; ,例2在输入的字符串中删除指定的字符2000H,p,0,ch0,i,运行程序 abcdef c, ,2000H,str,c,strprintf“s”,ps; 或 putsps,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,include void mainvoid char str80,*p; int a0,e0,i0,o0,u0; getsstr; forpstr;*p0a 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“a3dne3dni3dno3dnu3dn“,a,e,i,o,u; ,循环遍历数组元素,判断字母。,判断字符串是否结束,2. 字符串指针做函数参数(见P183 表6-2),include void cpystrchar *s1, char *s2 while*s20 *s1*s2; *s10 printf“str2 sn“,str2; printf“str1 sn“,str1; cpystrstr1,str2; printf“str2 sn“,str2; printf“str1 sn“,str1; ,去掉该句,对程序结果是否有影响,例 编写函数,用指针进行字符串的复制6.2.4 指针数组,指针是存放其它数据对象地址的变量。也可以构成数组。每个数组元素均为一个指针变量,且在内存中连续存放。,1. 指针数组定义,格式 type *数组名元素个数;,int *p 4 ;,定义(说明)p是含有4个元素的指针数组,每个元素都是 一个指向整型变量的指针(二级指针) 。,数组名p为数组的首地址。,使用前必须让各元素指向对象。,int i, a34, *p3; fori0;i3;i p i a i ; *pij2; /*通过指针数组引用数组元素aij*/,2、用指针数组处理多字符串,例用指针数组对字符串进行排序。,include void mainvoid int i, j ; char *ps “Get“, “Put“, “Time“, “Date“, *p ; printf“排序前字符串 n“; fori0;i0 ppsi; psipsj; psjp; printf“排序后字符串 n“; fori0;i4;i putspsi; 循环实现排序,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 *pa0; for i0 ; i3 ; i for j0; j3; j printf “ 5d“, paij ; printf “n“ ; fori0;i3;i printf“d,d,dn“,ai2-i,*ai,**aii; fori0;i3;i printf“d,d,dn“,*pai,pi,*pi; ,pa0,数组a的二维结构,pa1,pa2,a0,a1,a26.3 指针与函数,6.3.1 指向函数的指针 概念函数为程序实体,其代码占据连续的内存地址,其首地址 称为函数的入口地址,用函数名表示。C语言通过指针指向函数 的入口地址(函数名),也可以实现函数的调用。cmaxa,b;,int maxint x, int y return xyxy; ,2400H函数指针变量的定义,type *p ;,函数的类型。,指针变量名,函数,使用步骤, 定义函数fname和指向函数的指针p; 指针指向函数; pfname; 通过指针引用函数。 格式* p实参表;, , ,main ,举例求a、b的最大值。,include int lmaxint,int; void mainvoid int a,b,c; int * funp ; funplmax; scanf“d,d”, ,说明指向函数的指针。,指针指向函数。funp,lmax,通过指针引用函数。,lmax2100H2100H,6.3.2 返回指针的函数,概念函数可以返回一个值,也可以返回一个地址(指针),如果函数返回指针,称为返回指针的函数。,定义 type *函数名(形参表) /* 函数体 */ ,int *maxint a, int b,注意 int *p 和 int *p 的区别 int *p 是定义一个 变量(p是一个指向函数入口的指针变量); int *p 则是定义一个函数(p是一个返回值为指针的函数),它还有函数体部分。,例 输入一个17之间的整数,输出对应的星期名。,char *day_nameint n char *name “Illegal day”,”Monday”,”Tuesday”,”Wednesday”, “Thursday”,”Friday”,”Saturday”,”Sunday”; return n7 name0 namen ; include main int i; printf “ Day No n”; scanf “d”, ,定义一个指针型函数, 其返回值指向一个字符串,形参 n 为星期名对应的整数,exit为一库函数,exit1有错退出程序,exit0正常退出,name为一指针数组,每个元素均为指针变量。运行结果, Day No 2 Day No 2 Tuesday,6.3.3 main函数的参数如DOS命令Ctest aa bb cc,可执行文件名,命令参数,主函数main也可以带参数,由于main不能被其他函数调用,故无法在程序内部取得实参值。它的参数来自dos提示符命令行如用命令行运行编译连接好的.文件,实参就是命令行输入的字符串。主函数一般有两个参数。,void mainint argc, char *argv 函数体 ,整型变量。存放命令行字符串的个数以空格分隔 。,指向字符的指针数组。分别存放各字符串参数的地址。,举例编程显示命令行输入的参数。include void mainint argc, char *argv int i; printf“argcdn“, argc; fori0; iargc; i printf“argvdsn “,i, argv i ; ,test How are you 该程序名应为test.c,编译、连接后生成test.,C,argc 4,举例在字符串中查找特定的字符。,include include char *lstrchar char * , char ; void main void char c , *p , str80 ; gets str ; scanf “ c ” , ,返回指针的函数。,指向空, 课堂作业, include main int i; char s5,*p; fori0; is;p printf“s,cn“,p,*p; ,写出下列程序运行结果。, include int fint *a,int n ifn1 return *afa1,n-1; else return *a; void main int aa101,2,3,4,5,6,7,8,9,10,s; sfaa1,4; printf“dn“,s; , 思考题 作业题,p188习题 一、选择题 720。 二、填空题 47。 三、程序运行题13。 四、程序填空题2、4。 五、程序设计题 2、3、6。,上机验证 p178 例 6.19 ,分析行指针定义*pn和指针数组定义*pn的异同点,进一步理解和记忆二维数组中数组元素和其地址的表示方法。,编程题,include define N 3 void ssint c3,int *s1,int *s2; void mainvoid int aNN,bN; int i,j,k,sum1,sum2; fori0;iN;i forj0;jN;j scanf“d“, ,用指针编写函数分别求二维方阵主、辅对角线上元素的和 sum1 和 sum2。 要求在主函数中输入a44,通过函数用指针求a44主、辅对角线元素的和。 见 ktzyss.c,

C语言字符型数组ppt,C语言第13讲指针与字符串(字符数组).ppt相关推荐

  1. tp5数组为什么要中括号_VBA数组与字典解决方案第7讲:为什么要采用数组公式(一)...

    VBA数组与字典解决方案第7讲:为什么要采用数组公式(一) 今日继续讲解VBA数组与字典解决方案第7讲,在前几讲的数组应用中我们深入地讲解了工作表数组和数组公式,以及数组维数扩展的意义.那么,有的朋友 ...

  2. r语言转化为python_数值型与字符型转换总结|R语言

    在日常碰到问题时出现当前"数据类型不能进行操作"的提示时还是有些脑壳疼,所以这次整理了针对R数据类型转换的总结.理论部分主要是R for Data Science的向量节选翻译.& ...

  3. c语言字符型输入格式化,c语言之字符串和格式化输入输出

    字符串和格式化输入输出 #include #include #define DENSITY 62.4 int main(void) { float weight, volume; int size, ...

  4. c语言中合法的字符型常量是,C语言习题库(带答案)-排版.doc

    一.选择题 1.以下不能定义为用户标识符的是( ). (A) MAIN (B) _HJ (C) 2ong (D) LINE1 2.以下不能定义为用户标识符的是( ) (A) If (B) H_J (C ...

  5. c语言字符型常量计算,c语言字符型常量和变量.doc

    c语言字符型常量和变量 谅娄协逞妥唐氦错赵夏教灶技竞白量菲荚锚坤缆咕囤厢失随着牲淋我雾谋蹬格椭金佃贮官梳冕萨鱼疥卫答襟回咬逢砾摘宛嵌拎宛拽抱钢簧彩城挛霉门窗莉辉托罚椽建呛液汛炕午望延晒纠挺谱阔衔解抗贱 ...

  6. c语言字符型数据是,C语言字符型数据.doc

    C语言字符型数据 2.5.1字符常量字符常量是指用一对单引号括起来的一个字符.如'a','9','!'.字符常量中的单引号只起定界作用并不表示字符本身.单引号中的字符不能是单引号(')和反斜杠(\), ...

  7. php 转换数组的字符集,PHP 自动转换字符集(支持字符串和数组)功能实例

    这篇文章主要为大家详细介绍了PHP 自动转换字符集(支持字符串和数组)功能实例,具有一定的参考价值,可以用来参考一下. 感兴趣的小伙伴,下面一起跟随512笔记的小编罗X来看看吧. 经测试代码如下: / ...

  8. c语言字符型头文件,C语言头文件大全Word版

    <C语言头文件大全Word版>由会员分享,可在线阅读,更多相关<C语言头文件大全Word版(7页珍藏版)>请在人人文库网上搜索. 1.传播优秀Word版文档 ,希望对您有帮助, ...

  9. 单片机c语言字符型数据类型,单片机C语言数据类型

    本资料适合单片机C语言的初学者,可当做参考使用.牛B的人就不要看了 单片机C语言的数据类型 在最小系统的介绍中,我们已经大致了解了单片机的程序结构,下面我们来系统介绍一下. 先来简单说说C语言的标识符 ...

最新文章

  1. Spring Framework 6 将采用 Java 17,是时候将你的应用升级了
  2. java jackson json_使用Java和Jackson将Json序列化为通用结构而无...
  3. 剑指offer--剪绳子
  4. android取消自动调试模式吗,Android进入调试模式的三种技巧
  5. Linux日常运维管理技巧(三)iptables规则备份和恢复、firewalld的9个zone、任务计划cron、chkconfig系统服务管理、添加服务命令、systemctl管理服务
  6. sa密码不满足强密码要求_恢复丢失的SA密码
  7. 8202v/8202ka/8202kd/8202rd 无线游戏手柄方案
  8. 《HFSS电磁仿真设计从入门到精通》一1.3 HFSS工程的通用设置
  9. $.ajax data怎么处理_不用jsp怎么实现前后端交互?给萌新后端的ajax教程(2)
  10. MySQL联合查询及取别名
  11. 山海经电子书古文/翻译白话文版发布,免费电子书。
  12. 分析can波形及数据
  13. 普通大一学生的自我反思
  14. possible formatting directive
  15. 推荐系统(八)FNN模型(FM+MLP=FNN)
  16. 西北师范大学本科毕业论文答辩PPT模板
  17. 串口通信协议示例与分析
  18. VMware虚拟机安装macos Big Sur 11.5 (20G71)教程镜像CDR/ISO下载
  19. Linux操作系统中的挂载和卸载U盘
  20. 2021年中国私营工业企业数量及经营情况分析[图]

热门文章

  1. 家用轿车轮胎多久更换一次?
  2. 不论我们爱或者不爱,我们为什么选择SAP?
  3. 会计记忆总结之六:账务处理程序
  4. 敢问路在何方——项目经理成长手记
  5. 结婚率连7年下降,数据揭秘单身背后复杂逻辑
  6. 那些不敢生孩子的女人,都在怕什么?
  7. redmine备份_Redmine 数据迁移记录
  8. 设计模式六大原则_设计模式—设计六大原则
  9. java 中断线程 wait_Java 线程中断(interrupt)与阻塞 (park)的区别
  10. BUUCTF(pwn)bjdctf_2020_babystack2