电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

程序设计基础 教学课件 ppt 作者 C语言 7-10章 第8章

57页
  • 卖家[上传人]:E****
  • 文档编号:89364171
  • 上传时间:2019-05-24
  • 文档格式:PPT
  • 文档大小:419KB
  • / 57 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 1、第8章 字 符 串,8.1 字符串 8.2 函数间字符串的传递 习题,8.1 字 符 串 8.1.1 字符串常量 1定义 字符串常量是由一对双引号括起来的字符序列。例如,“China“,“How are you“,“$abc“ , “123569“,“string“ 等都是合法的字符串常量。 2说明 (1) 双引号仅仅起到字符串常量的边界符作用,并不是字符串常量的一部分。,(2) 注意区分字符串常量和字符常量的区别。例如,“c“ 和 c 是根本不同的数据,前者是字符串常量,后者是字符常量。它们之间主要有以下区别: 字符常量由单引号括起来,字符串常量由双引号括起来; 字符常量只能是单个字符,字符串常量则可以含一个或多个字符; 可以把一个字符常量赋予一个字符变量,但不能把一个字符串常量赋予一个字符变量; 字符常量占一个字节的内存空间。,8.1.2 字符串的存储 C语言规定:在每一个字符串的结尾加一个“字符串结束标志”,以便系统据此判断字符串是否结束。同时C语言也规定:以字符 0 作为字符串的结束标志。字符 0 是一个ASCII码为0的字符。从ASCII代码表中可以看到,ASCII码为0的字

      2、符是“空操作字符”,它不引起任何控制动作,也不是一个可显示的字符,即它什么也不做。用它作为字符串结束标志不会产生附加的操作或增加有效字符,它只是一个供辨别的标志。 因此,字符串常量在内存中所占的字节数等于字符串中有效字符所占的字节数(即有效字符的个数)再加1个字节。增加的一个字节存放的是字符串结束的标志0。,例如:字符串 “Welcome“ 在内存中所占的字节为: 注意区分字符串常量和字符常量的区别。例如 “s“ 和 s ,字符串常量 “s“ 和字符常量 s虽然都只有一个字符,但在内存中的情况是不同的。,字符串 “s“ 在内存中占2个字节,可表示为: 字符 s 在内存中占一个字节,可表示为: 注意:在写字符串时不必加 0 ,0 字符是系统自动加上的。,8.1.3 字符串的表示 1字符数组 C语言中没有专门的字符串变量,通常用一个字符数组来存放一个字符串。语言允许用字符串的方式对字符数组作初始化,即可以用字符数组存放一个字符串。 例如: char c = W, e, l, c, o, m, e; 可写为: char c =“Welcome“; 也可以省略花括号,直接写为: char c

      3、=“Welcome“;,注意:用字符串方式赋值比用字符逐个赋值要多占一个字节,多占的字节用于存放字符串结束标志 0。因此,以下两个字符数组的初始化等价,其字符数组的长度都是8。 char c =“Welcome“; char c = W, e, l, c, o, m, e,0; 字符数组完整的应用程序举例如下:,/*源程序8-1*/ #include “stdio.h“ main( ) char string =“Welcome to China!“; printf(“%sn“,string); 程序运行结果如下:,2字符指针 也可以不定义字符数组,而定义一个字符指针,用字符指针指向字符串中第一个字符的地址。,/*源程序8-2*/ #include “stdio.h“ main( ) char *string=“Welcome to China!“; printf(“%sn“,string); 程序运行结果如下:,3字符数组和字符指针变量的区别 (1) 字符数组有若干个元素,每个元素中存放一个字符;而字符指针变量中存放的是字符串中第一个字符的地址。 (2) 赋值方式的不同。 例如:字符

      4、指针的赋值语句: char *string=“Welcome“; 它等价于: char *string; string=“Welcome“; 因为可以将字符串的首地址存放在指针变量中。,而字符数组的赋值语句: char string =“Welcome“; 它不等价于: char string ; string =“Welcome“; 因为string表示字符数组的首地址,是常量,不能在赋值号的左端进行修改,不能将字符串的首地址赋值给数组名。,(3) 字符数组在编译时为其分配存储单元,有确定的地址;字符指针分配的内存单元只能存放一个字符变量的地址,若没有赋值,则没有确定的指向。 char string20; scanf(“%s“,string); 以上语句是正确的。 char *p; scanf(“%s“,p); 以上语句是错误的,因为字符指针没有指向任何存储空间, 不能输入字符串。应改成: char string20 , *p; p=string; scanf(“%s“,p);,(4) 指针变量的值可以改变,是变量;数组名是常量,它的值是不能改变的。 /*源程序8-3*/ #incl

      5、ude “stdio.h“ main( ) char *string=“Welcome to China!“; string=string+11; printf(“%sn“,string); ,程序运行结果如下:,将程序改为 /*源程序8-4*/ #include “stdio.h“ main( ) char string=“Welcome to China!“; string=string+11; printf(“%sn“,string); 以上程序是错误的,原因在于数组名是常量,它的值是不能改变的。,8.2 函数间字符串的传递 8.2.1 单个字符串的传递 函数的参数不仅可以是整型、实型、字符型等数据,还可以是数组和指针类型。将字符串从一个函数传递到另一个函数,可以用字符数组名或指向字符串的指针作参数,实际上传递的是字符串的起始地址。在被调用的函数中如果改变了字符串的内容,则在主调函数中可以得到改变了的字符串。,/*源程序8-5*/ #include “stdio.h“ main( ) void copy_str(char *from, char *to); /函数的声明 char

      6、 a50=“I am a teacher.“; char *b=“Welcome to China!“; printf(“a=%snb=%sn“,a,b); copy_str(b,a); printf(“a=%snb=%sn“,a,b);, void copy_str(char *from, char *to) int i=0; while(fromi!=0) *(to+i)=fromi; i+; toi=0; ,程序运行结果如下:,8.2.2 多个字符串的传递 在一个数组中,如果每个元素都是指针类型数据,则称该数组为指针数组。也就是说,指针数组中的每一个元素都相当于一个指针变量。指针数组的一般定义形式为: 类型名 *数组名数组长度; 例如: char *str3; 表示str是一个指针数组,该数组有3个元素,每个元素值都是一个指针变量,指向字符型变量。应特别注意指针数组和指向一维数组的指针变量的区别。例如:,char (*str)3; 表示str是一个指向一维数组的指针变量,该一维数组的长度为3,数组的元素类型为字符型。 指针数组的一个典型的应用是用它来指向若干个字符串,使字符串的处

      7、理更加方便灵活。同时也可以将指针数组作为函数的参数,此时传递的将是此指针数组的起始地址。可以通过此种方法来处理多个字符串。,/*源程序8-6*/ #include “stdio.h“ main( ) void print(char *string,int n); /函数的声明 char *str3; str0=“Welcome to China!“; str1=“Follow me“; str2=“I am a teacher.“; print(str,3);, void print(char *string,int n) int i; for(i=0;in;i+) printf(“%sn“,stringi); 程序运行结果如下:,8.2.3 main函数的参数 指针数组的一个重要应用是作为main函数的形参。实际上,main函数可以有参数,这个参数可以认为是main函数的形式参数。语言规定main函数的参数只能有两个,习惯上将这两个参数写为argc和argv。因此,带参数的main函数头可写为: main(int argc,char *argv),语言规定:main函数的第一个形参a

      8、rgc必须是整型变量, main函数的第二个形参argv必须是指向字符串的指针数组。由于main函数不能被其他函数调用,因此不可能在程序内部取得实际值。那么,在什么时候、在何处把实参值赋予main函数的形参呢? 实际上,main函数的参数值是从操作系统命令行中获得的。也就是在一个命令行中包括命令名和需要传给main函数的参数。命令行的一般形式为: 可执行文件名 参数1 参数2 参数n,其中可执行文件名(即命令名)和各参数之间用空格分隔。应该特别注意的是main函数的两个形参和命令行中的参数在位置上的对应关系。因为main的形参只有两个,而命令行中的参数个数原则上未加限制。第一个形参argc表示了命令行中参数的个数(注意:可执行文件名本身也算一个参数),argc的值是在输入命令行时由系统按实际参数的个数自动赋予的;第二个形参argv是字符串指针数组,其各元素值为命令行中各字符串(参数均按字符串处理)的首地址。指针数组的长度即为参数个数。数组元素初值由系统自动赋予。,例如有如下命令行: cmdname BASIC foxpro FORTRAN C 在此命令行中,cmdname为可执行文件名

      9、,BASIC、foxpro、FORTRAN和C为参数。则对应于此命令行的main函数的形参argc为5,形参argv的对应关系如图8-1所示。,图8-1 argv的对应关系,/*源程序8-7*/ #include “stdio.h“ main(int argc,char *argv) int i; for(i=0;iargc;i+) printf(“%sn“,argvi); ,假设此程序保存在D:,文件名为m.c;经过编译、连接之后将会得到可执行文件m.exe。则该程序的执行过程和运行结果如下:,8.2.4 字符串处理函数 C语言提供了大量的字符串处理函数,使用这些字符串处理函数可简化编程。在使用输入/输出的字符串函数时,应包含头文件 “stdio.h“;在使用其他字符串处理函数时,应包含头文件 “string.h“。以下介绍几种最常用的字符串函数。 1字符串输出函数puts 格式:puts(字符数组) 功能:将字符数组中的字符串(以 0 作为结束标志)输出到终端,即在屏幕上显示该字符串。,/*源程序8-8*/ #include “stdio.h“ main( ) char str=“BASICndBASEnC“; puts(str); ,程序运行结果如下: 从程序中可以看出,puts函数中可以使用转义字符,因此输出结果成为两行。puts函数完

      《程序设计基础 教学课件 ppt 作者 C语言 7-10章 第8章》由会员E****分享,可在线阅读,更多相关《程序设计基础 教学课件 ppt 作者 C语言 7-10章 第8章》请在金锄头文库上搜索。

      点击阅读更多内容
    最新标签
    发车时刻表 长途客运 入党志愿书填写模板精品 庆祝建党101周年多体裁诗歌朗诵素材汇编10篇唯一微庆祝 智能家居系统本科论文 心得感悟 雁楠中学 20230513224122 2022 公安主题党日 部编版四年级第三单元综合性学习课件 机关事务中心2022年全面依法治区工作总结及来年工作安排 入党积极分子自我推荐 世界水日ppt 关于构建更高水平的全民健身公共服务体系的意见 空气单元分析 哈里德课件 2022年乡村振兴驻村工作计划 空气教材分析 五年级下册科学教材分析 退役军人事务局季度工作总结 集装箱房合同 2021年财务报表 2022年继续教育公需课 2022年公需课 2022年日历每月一张 名词性从句在写作中的应用 局域网技术与局域网组建 施工网格 薪资体系 运维实施方案 硫酸安全技术 柔韧训练 既有居住建筑节能改造技术规程 建筑工地疫情防控 大型工程技术风险 磷酸二氢钾 2022年小学三年级语文下册教学总结例文 少儿美术-小花 2022年环保倡议书模板六篇 2022年监理辞职报告精选 2022年畅想未来记叙文精品 企业信息化建设与管理课程实验指导书范本 草房子读后感-第1篇 小数乘整数教学PPT课件人教版五年级数学上册 2022年教师个人工作计划范本-工作计划 国学小名士经典诵读电视大赛观后感诵读经典传承美德 医疗质量管理制度 2 2022年小学体育教师学期工作总结 2022年家长会心得体会集合15篇
    关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
    手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
    ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.