- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
5.5 字符数组 字符数组用来存放字符串数据,字符数组中的一个元素存放一个字符,字符数组具有前述数组的共同属性。由于字符串应用广泛,C和C++专门为它提供了许多方便的用法和函数。 5.5.1 定义和初始化字符数组 1. 定义字符数组的方法与数值数组类似。 例如 char c[10]; 定义c为字符数组,包含10个字符型元素。 2. 初始化字符数组,最容易理解的方式是逐个字符赋给数组中各元素。如 char c[10]={ I, ,a,m, ,h,a,p,p,y }; 把10个字符分别赋给c[0]~c[9]这10个元素,如图5.7。 说明:①如果花括号中提供的初值个数大于数组长度,则按语法错误处理。②如果初值个数小于数组长度,其余的元素自动定为空字符。③如果提供的初值个数与预定的数组长度相同,在定义时可以省略数组长度,系统会自动根据初值个数确定数组长度。如下形式自动确定为10 char c[ ]={ I, ,a,m, ,h,a,p,p,y }; 5.5.2 字符数组的赋值与引用 和数值数组一样,只能对字符数组的元素赋值,而不能对整个数组赋值。如 char c[5]; c[0]=C; c[1]=h;c[2]=i;c[3]=n;c[4]=a; c[0]=c[1]; //对数组元素赋值,正确。 而 char a[10],c[10],b[10]={C, h, i, n, a }; c={C, h, i, n, a }; //错误,企图对整个数组一次赋值 a=b; //错误,企图对整个数组整体赋值 实例:引用字符数组,输出一个字符串。 #include iostream using namespace std; void main ( ) {char c[10]={I, ,a,m, ,a, ,b,o,y}; int i; for(i=0;i10;i++) coutc[i]; //逐个引用数组元素,每次输出一个字符 coutendl; return 0; } 输出结果: I am a boy 例5.9 设计和输出一个钻石图形(二维字符数组的定义、初始化和引用)。 #include iostream using namespace std; void main( ) {char diamond[ ][5]={{ , ,*},{ ,*, ,*}, {*, , , ,*},{ ,*, ,*},{ , ,*}}; int i,j; for (i=0;i5;i++) {for (j=0;j5;j++) coutdiamond[i][j]; coutendl; } } 5.5.3 字符串和字符串结束标志 1. 对一个字符串常量,存放时系统会自动在所有字符的后面加一个‘\0’作为结束符(P24)。 例如 coutI am happy; 字符串“I am happy”共有10个字符,但在内存中它共占11个字节,最后一个字节\0是由系统自动加上的。 \0是一个字符串结束标志(ASCII码为0)。执行此语句时逐个地输出字符,遇到\0就停止输出。 存放字符串的字符数组通过检测‘\0’的位置来判定字符串是否结束,而不是根据数组的长度来决定字符串长度。如果在一个字符数组中要存放多个不同长度的字符串,则应使数组长度大于最长的字符串的长度。 2. 有了\0可以用字符串常量来初始化字符数组。例如 char str[]={I am happy}; 也可以省略花括号,直接写成 char str[]=I am happy; 显然,这种方法直观,方便,符合人们的习惯。 说明: 1)此时数组str的长度是11,而不是10。因此,上面的初始化与下面的初始化等价: char str[]={I, ,a,m, ,h,a,p,p,y, \0 }; 2) char str[10]=“China”; 前5个为字符,其后5个是\0 3) 使用字符数组并不要求它的最后一个字符为\0,甚至可以不包含\0。如以下这样写完全是合法的: char str[5]={C,h,i,n,a}; 4) char str[5]=“China”; //出现“初始字符串太长”错误 5.5.4 字符数组的输入输出 字符数组的输入输出可以有两种方法: (1) 逐个字符输入输出,如前面的实例和例5.9。 (2) 将整个字符串一次输入或输出。例如有以下程序段: char str[20]; cinstr; //用字符数组名输入字符串 coutstr; //用字符数组名输出字符串 在运行时输入一
文档评论(0)