新编-C课件语言第09讲.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《新编-C课件语言第09讲.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 新编 课件 语言 09
- 资源描述:
-
1、2022-8-131 Program Design in C LanguagePage第九章第九章 字符串字符串 字符数组字符数组指向字符串的指针变量指向字符串的指针变量字符串处理函数字符串处理函数2022-8-132 Program Design in C LanguagePage一、一、字符数组的定义字符数组的定义字符数组:用来存放字符型数据的数组。字符数组:用来存放字符型数据的数组。格式:格式:char 数组名数组名常量表达式常量表达式,;char 数组名数组名常量表达式常量表达式1常量表达式常量表达式2,注意:注意:字符数组的定义、引用、初始化遵循字符数组的定义、引用、初始化遵循“数组
2、数组”的规定。的规定。9.2.1 字符数组的定义、初始化和引用 2022-8-133 Program Design in C LanguagePage在字符数组中,每一个元素只能存放一个字符。在字符数组中,每一个元素只能存放一个字符。例:例:char a10,b30;char s1020,h20100;二维字符数组,可以看作是一个字符串数组。二维字符数组,可以看作是一个字符串数组。9.2.2 字符数组的定义、初始化和引用 2022-8-134 Program Design in C LanguagePage二、二、字符数组的初始化字符数组的初始化 字符数组的赋值要符合数组的要求,除了在定义时字
3、符数组的赋值要符合数组的要求,除了在定义时初始化可以用字符串赋初值,其余只能一个元素一个元初始化可以用字符串赋初值,其余只能一个元素一个元素地赋值。素地赋值。1)给所有元素赋初值:)给所有元素赋初值:例例 char s17=s,t,r,i,n,g,!;char s2=s,t,r,i,n,g,!;!gnirts存储形式为:存储形式为:1、一维字符数组初始化、一维字符数组初始化9.2.3 字符数组的定义、初始化和引用 2022-8-135 Program Design in C LanguagePage例例 char s38=s,t,r,i,n,g,!,0;char s48=string!;cha
4、r s58=string!;存储形式为:存储形式为:0!gnirtsC语言中,规定了一个语言中,规定了一个“字符串结束标记字符串结束标记”,以字,以字符符0代表。代表。说明:说明:9.2.3 字符数组的定义、初始化和引用 2022-8-136 Program Design in C LanguagePage在字符数组中,并不要求它最后的一个字符为在字符数组中,并不要求它最后的一个字符为“0”,也可以没有也可以没有“0”。例例:char s5=“China”;也是合法的也是合法的字符串在实际存储时,系统会自动的在其尾部添加一个字符串在实际存储时,系统会自动的在其尾部添加一个结束标志结束标志0。0
5、代表代表ASCII码为码为0的字符,是一个空操作符,表示什的字符,是一个空操作符,表示什么也不干。么也不干。9.2.3 字符数组的定义、初始化和引用 2022-8-137 Program Design in C LanguagePage2)给部分元素赋初值:)给部分元素赋初值:例:例:char s19=C,h,i,n,a,!;char s29=C,h,i,n,a,!,0;char s39=”China!”;char s49=“China!”;存储形式为存储形式为:000!anihC9.2.3 字符数组的定义、初始化和引用 2022-8-138 Program Design in C Langu
6、agePage2、二维字符数组初始化、二维字符数组初始化二维字符串数组的初始化,可以采用二维字符数组初始二维字符串数组的初始化,可以采用二维字符数组初始化形式或者字符串初始化形式化形式或者字符串初始化形式例:例:char name210=J,o,h,n,0,M,a,r,r,y,0;char name210=”John”,”Marry”;char name210=”John”,”Marry”;这三种方法效果一样。这三种方法效果一样。9.2.3 字符数组的定义、初始化和引用 2022-8-139 Program Design in C LanguagePage1.利用格式符利用格式符%c逐个输入、
7、输出字符:逐个输入、输出字符:例例:char str10;int i;for(i=0;i9;i+)scanf(%c,&stri);for(i=0;i9;i+)printf(%c,stri);9.2.4 字符数组的输入输出 2022-8-1310 Program Design in C LanguagePage2.利用格式符利用格式符%s,可以一次输入、输出字符串。,可以一次输入、输出字符串。例例:char str10;scanf(%s,str);printf(%sn,str);%s:遇第一个空白符(空格、:遇第一个空白符(空格、Tab、回车)结束输入,、回车)结束输入,遇第一个遇第一个0结束输
8、出。结束输出。输入:输入:program输出:输出:program 9.2.4 字符数组的输入输出 2022-8-1311 Program Design in C LanguagePage例例:char s110,s215;scanf(%s%s,s1,s2);printf(%s%sn,s1,s2);输入:输入:program C输出:输出:program C输入:输入:How are you输出:输出:How are scanf函数虽然给多个字符的输入提供了简便的函数虽然给多个字符的输入提供了简便的方法,但对于有空格的字符串的输入却有限制。方法,但对于有空格的字符串的输入却有限制。9.2.4
9、字符数组的输入输出 注意:注意:scanf函数参数要求的是地址,故直接用字符数函数参数要求的是地址,故直接用字符数组名进行操作。组名进行操作。字符数组名表示的是该数组的首地址,因此使字符数组名表示的是该数组的首地址,因此使用格式符用格式符%s可以实现字符串整体的输入和输出。可以实现字符串整体的输入和输出。2022-8-1312 Program Design in C LanguagePage9.3 字符串指针变量的定义与引用 字符串常量的处理是用字符数组来实现的。也字符串常量的处理是用字符数组来实现的。也就是说,无论是否定义了字符数组,对于程序就是说,无论是否定义了字符数组,对于程序中出现的字
10、符串,系统都会在内存中开辟一个中出现的字符串,系统都会在内存中开辟一个字符数组连续存储空间来存放该字符串常量。字符数组连续存储空间来存放该字符串常量。字符串的指针:字符串的首字符地址,也就是字符串的指针:字符串的首字符地址,也就是存放字符串的字符数组的首地址。存放字符串的字符数组的首地址。字符串指针变量:通常把字符串指针变量:通常把char型指针变量称为型指针变量称为字符串指针变量。也就是说,指向字符串的指字符串指针变量。也就是说,指向字符串的指针变量等同于指向字符数组元素的指针变量,针变量等同于指向字符数组元素的指针变量,可以指向字符串中的任意一个字符。可以指向字符串中的任意一个字符。202
11、2-8-1313 Program Design in C LanguagePage9.3 字符串指针变量的定义与引用 字符串指针变量的定义和初始化字符串指针变量的定义和初始化方式一:将存放字符串的字符数组名赋给字符方式一:将存放字符串的字符数组名赋给字符串指针变量,让字符串指针变量指向字符串的串指针变量,让字符串指针变量指向字符串的首字符,然后通过移动指针变量来访问字符串首字符,然后通过移动指针变量来访问字符串的其他字符。的其他字符。例如:例如:char str =Welcome to China!;char *p;p=str;/*等价于等价于 p=&str0 */2022-8-1314 Pr
12、ogram Design in C LanguagePage9.3 字符串指针变量的定义与引用 字符串指针变量的定义和初始化字符串指针变量的定义和初始化方式二:在程序中定义一个字符串指针变量,方式二:在程序中定义一个字符串指针变量,并将字符串的首地址直接赋给它,然后通过移并将字符串的首地址直接赋给它,然后通过移动指针变量来访问字符串的其他字符。动指针变量来访问字符串的其他字符。例如:例如:char *p=Welcome to China!;等价于:等价于:char *p;p=Welcome to China!;这里的字符串指针变量这里的字符串指针变量p指向字符串的首字符,指向字符串的首字符,即
13、第一个字符即第一个字符W。2022-8-1315 Program Design in C LanguagePage例例 用字符串指针变量实现字符串操作用字符串指针变量实现字符串操作#include void main()char*str=Welcome to China!;printf(%sn,str);/*整体引用字符串整体引用字符串*/for(;*str!=0;str+)printf(%c,*str);/*逐个引用字符串中的字符逐个引用字符串中的字符*/printf(n);9.3 字符串指针变量的定义与引用 程序运行结果程序运行结果:Welcome to China!Welcome to
14、China!2022-8-1316 Program Design in C LanguagePage9.3 字符串指针变量与字符数组 字符数组是由若干个元素组成,每个元素存放一字符数组是由若干个元素组成,每个元素存放一个字符;而字符串指针变量存放的是字符串中某个字符;而字符串指针变量存放的是字符串中某一个字符的地址。一个字符的地址。赋值方式不同。字符数组只能对各个元素分别赋赋值方式不同。字符数组只能对各个元素分别赋值,而字符串指针变量只用赋给字符串的首地址值,而字符串指针变量只用赋给字符串的首地址就可以了。就可以了。例如,下面的赋值是正确的:例如,下面的赋值是正确的:char *str;str
15、=Welcome to China!;/*str是指针变量是指针变量*/下面的赋值是错误的:下面的赋值是错误的:char str30;str=Welcome to China!;/*str是数组名是数组名*/2022-8-1317 Program Design in C LanguagePage9.3 字符串指针变量与字符数组 字符串指针变量占用的内存要少于字符数组。字符串指针变量占用的内存要少于字符数组。例如,编译系统为下面二维字符数组的定义及初始例如,编译系统为下面二维字符数组的定义及初始化分配了化分配了36个字节的内存空间:个字节的内存空间:char str218=Hello,Welco
16、me to China!;为下面两个字符串指针变量的定义及初始化分配了为下面两个字符串指针变量的定义及初始化分配了28个字节的内存空间:个字节的内存空间:char*str1=Hello,*str2=Welcome to China;字符串指针变量的值是可以改变的,而字符数组的字符串指针变量的值是可以改变的,而字符数组的数组名永远代表该数组的首地址,它的值是不会变数组名永远代表该数组的首地址,它的值是不会变化的。化的。2022-8-1318 Program Design in C LanguagePage例例 将字符串将字符串str1复制到字符串复制到字符串str2#include void m
17、ain()char str1=Copy string,str230;char *p1=str1,*p2=str2;while(*p1!=0)*p2+=*p1+;*p2=0;printf(String str2=);puts(str2);程序运行结果程序运行结果:String str2=Copy string9.3 字符串指针变量与字符数组 2022-8-1319 Program Design in C LanguagePage9.3 字符串指针变量作为函数参数 特点:特点:用字符数组名或字符串指针变量名作为实参,用字符数组名或字符串指针变量名作为实参,向形参传递字符串的首地址;向形参传递字符串
展开阅读全文