- 1、本文档共36页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第九章字符串讲解
第九章 字符串 §9.1 用字符数组来存放字符串 §9.2 字符串的指针和指向字符串 的指针变量 §9.3 字符串的输入和输出 §9.4 字符串数组 §9.1 用字符数组来存放字符串 一、字符串的概念 1.字符串的定义 由字符组合而成并用“”括起来,借助于字符 型的一维数组来存放,并以字符‘\0’作为字符 串的结束标志,但不计入串的长度。 2.字符串常量 用“”括起来的字符组合,无需在未尾加结束 标志,系统在编译时会自动加上来存储。 二、字符数组 1.字符数组的定义 char s[10]; 或 int s[10]; 2.字符数组的初始化 (1)逐个字符赋给数组中各元素 char s[10]={‘c’,’o’,’m’,’p’,’u’,’t’,’e’,’r’,’\0’}; 若初值的个数大于数组长度,则语法错误, 若小于数组长度,则只将这些字符赋给数组 中前面那些元素,其余的元素自动定为空字 符。 注意:如果一个字符数组用来作为字符串使 用,在定义该字符数组时,数组的大小 应该比它将要实际存放的最长字符串多 一个元素,从而给未尾存放空字符留下 空间。 如:char s[ ]={ ‘c’,’o’,’m’,’p’,’u’,’t’,’e’,’r’,’\0’}; 若有定义char s[ ]={ ‘c’,’o’,’m’,’p’,’u’,’t’,’e’,’r’ }; 则只是定义了一个有8个字符的字符数组, 不是字符串。 (2)在赋初值时直接赋字符串常量 char s[10]={“computer”}; char s[10]= “computer”; 例:char s[7]= “string!”; 不是字符串 char s[ ]= “string!”; 后一种写法中,系统将按字符串实际长度 来定义数组的大小,即数组长度为8。 (3)在程序执行过程中赋字符串 不能用赋值语句给字符数组名赋一串字符 如: char s[10]; s=”computer”; 给数组元素逐个赋字符值,最后加入串结 束标志 注意:’\0’不能用scanf函数从键盘输入。 三、字符数组与字符串的区别 字符数组的每个元素中可存放一个字符, 但并不限定最后一个字符应该是什么,而字 符串以字符数组的形式存储,但最后一个是 特定字符’\0’。 四、程序举例 P150,例7.8。 §9.2 字符串的指针和 指向字符串的指针变量 一、用字符指针来表示字符串 可以不定义字符数组,而定义一个字符指 针来表示字符串。 char *s= “computer”; C语言对字符串常量是按字符数组处理, 在内存中开辟了一个字符数组来存放字符串 常量。 可以称s为字符串变量,但s中存放的是字符 串首地址而不是字符串本身。 也可写成:char *s; s=“computer”; 注意: 字符串的结束标志是系统自动加上的。 printf(“%s\n”,s); 输出s时,先输出它所指向的一个字符数 据,然后自动使s加1,指向下一个字符,然 后再输出……,直到遇到空字符为止。 通过指针变量和字符数组名都可以输出一 个字符串,而对一个字符数组,不能通过数 组名输出它的全部元素,输出的将是首字符 的地址。 举例:P252,例10.17,10.18。 二、字符指针变量与字符数组 1.字符数组由若干个元素组成,每个元素中 放一个字符,而字符指针变量中存放的是地 址(字符串的首地址)。 2.赋值方式 对字符数组只能对各个元素赋值,不能用以下方 法: char s[10]; s=”computer”; 对字符指针变量,可用下列方法赋值: char *s; s=“computer”; 3.赋初值时,对以下的变量定义和赋初值 char *a=“computer”; 等价于:char *a; a=“computer”; 而对数组初始化时,不能整体赋值。 4.如果定义了一个字符数组,在编译时为它 分配存储单元,它有确切的地址。而定义一 个字符指针变量时,给指针变量分配内存单 元
文档评论(0)