程序设计_1209第四章数组指针.pdf

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
《程序设计》多媒体教程 第九讲 第四章 数组、字符串、指针及其应用 4.4 字符串 4.4.1 字符串的存储 C语言没有为字符串提供专门的数据类型来定义字符串变量,而是要借助于数组或指针 来表示字符串。 ※ 字符串常量的表达形式及存储 用双引号括起的字符序列称为字符串常量,例如: “A □guy!\n”,“a”,“x=%d\n”,等等。 其中,□表示空格。在字符串中,每一个字符(包括空格‘\40’ AA □□ gg uu yy !! \n\n \0\0 和回车符‘\n’等) 占据一个字节。C语言规定,每个字符串的最后 aa \0\0 必须有一个结束符‘\0’(ASCII编码为0) 。因此,一个字符串所占 xx == %% dd \n\n \0\0 用的存储单元数量(字节数)等于字符序列中字符的个数+1。 【注意】‘a’和”a”有本质的区别,‘a’表示一个字符,占有一个字节,而”a”表示字符串, 占有2个字节,包含字符‘a’和‘\0’。 ※ 字符数组的定义和存储 字符数组是存储字符串的一种常用的形式。在字符数组中,每个数组元素存放一个字符。 在字符数组中可以根据需要来决定是否加字符串结束符’\0’。 例如,定义以下字符数组,并给以赋初值: char s1[8]={‘A’, ‘\40’, ‘g’, ‘u’, ‘y’, ‘!’, ‘\n’, ‘\0’}; /* ‘\40’是空格 */ char s2[4]={‘a’, , , }; /* s2[1],s2[2],s2[3] 的值不定 */ char s3[8]={‘x’, ‘=’, ‘%’, ‘d’, ‘\n’, ‘\0’, ‘y’, ‘\0’}; /* 存在2个’\0’ */ s1s1 AA □□ gg uu yy !! \n\n \0\0 数组数组s1s1 占有占有88个字节个字节 s2s2 aaa 不定 数组数组s2s2 占有占有44个字节个字节 不定不定 s3s3 xx == %% dd \n\n \0\0 yy \0\0 数组数组s3s3 占有占有88个字节个字节 由于在s1中有一个’\0’,因此可以说s1中存放了一个字符串“A □guy!\n”,或者说存放了8 个字符。s2中没有’\0’,因此只能认为存放了一个字符’a’。s3中虽然有两个’\0’,但是应该认 为存放了一个字符串“x=%d\n”,含有6个字符,或者说存放了8个字符。 4.4.2 字符和字符串的获取 ※ 字符的逐个赋值 可以对字符数组的元素逐个赋值,从而获得一个字符序列。 例如,定义字符数组s : char s[30]; int i; for(i=0; i26; i++) s[i] = ‘a’ + i; /* 对字符数组s 的元素逐个赋值 */ s[i] = ‘\0’ 最后一个语句添加了字符结束符’\0’,表示字符数组s将获得一个字符串,含有27个字符。 如果没有最后一个语句,表示字符数组s仅仅获得一个字符序列,含有26个字符。 ※ 字符串的非法赋值 C语言规定,不得用赋值语句将字符串常量赋值给字符数组,也不得用赋值语句将字符 指针指向字符串常量。例如,定义字符数组s和字符指针ps: char s[30], *ps; 以下语句均是非法的: s = “xxx”; /* 不得将字符串常量赋值给字符数组s */ ps = “xxx”; /* 不得将字符串常量赋值给字符指针ps */ ※ 字符指针的目标 字符指针可以指向某个字

文档评论(0)

zzqky + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档