文档详情

《C语言程序设计(》课件_第5章 数组.ppt

发布:2025-03-02约1.46万字共42页下载文档
文本预览下载声明

①形式不同,字符串常量是用双引号引起来的字符序列,字符序列可以为空,也可以是一个或多个字符;而字符常量是用单引号引起来的单个字符;②存储不同,字符串常量要占用(字符串长度+1)个字节;而字符常量占用一个字节空间存放其本身。例如,s是字符常量,值为字母s,在内存保存的是字母s的ASCII码值,占一个字节;而s表示含有一个字母s的字符串,在内存保存的是字母s和空字符\0的ASCII码值,占两个字节。表示空串,在内存中保存的是空字符\0的ASCII码值,占一个字节。表示一个含有一个空格的字符串,在内存中占两个字节;表示空格字符,在内存中占一个字节。注意:对于字符串数组,系统不自动添加结束标志\0,如例5.10。【例5.10】从键盘输入一行字符,存放在字符数组中,然后输出。#defineN80#includestdio.hmain(){charstr[N];inti,j;printf(pleaseenterthecharacters:);for(i=0;(str[i]=getchar())!=‘\n’;i++);/*输入字符序列,当输入 字符为回车时结束*/str[i]=\0;/*添加字符串结束标志*/for(i=0;str[i]!=\0;i++)/*输出字符序列*/printf(%c,str[i]);}2.字符串常量赋给字符数组若在定义字符数组的同时赋初值,则可将字符串常量赋给它。例如,charc[20]={Thegreatwall};习惯上可以省略花括号,上面定义写为:charc[20]=Thegreatwall;数组c在内存中存储的示意图如图。Thegreatwall\0\0\0\0\0\0012345678910111213141516171819说明:①若定义字符数组时完成赋初值,则可以在定义中省略数组的长度。系统会根据所赋字符串常量的实际长度来确定字符数组的长度。如上述定义也可写为:charc[]=Thegreatwall;系统会自动确定数组c的长度为15。②字符串常量末尾处有系统自动加的结束标志\0,所以要求数组长度比字符串长度至少大1。例如,charc[14]=Thegreatwall;这条语句中数组c不能满足字符串长度。③除了数组定义时可以将字符串直接付给字符数组外,其它时刻只能对元素进行赋值。例如,不能用语句“c=string;”对字符数组c赋值。【例5.11】写出程序结果,并考虑原因。#includestdio.hmain(){charstr1[]=Thisisastring;charstr2[]={T,h,i,s,,i,s,,a,,s,t,r,i, n,g,\0};charstr3[]={T,h,i,s,,i,s,,a,,s,t,r,i, n,g};inti;for(i=0;str1[i]!=\0i20;i++)printf(%c,str1[i]);printf(\nlength:%3d\n,i);for(i=0;str2[i]!=\0i20;i++)printf(%c,str2[i]);printf(\nlength:%3d\n,i);for(i=0;str3[i]!=\0i20;i++)printf(%c,str3[i]);printf(\nlength:%3d\n,i);}程序运行结果为:Thisisastringlength:16Thisisastringlength:16ThisisastringΦ???length:20(注意这里Φ???是四个未知字符造成的)charstr1[]=Thisisastring;和charstr2[]={T,h,i,s,,

显示全部
相似文档