第5章 利用数组处理批量数据
数值类型的数组如果要访问每个元素,需要使用循环。
对于字符数组整体访问有特殊的方法。
5.5 字符数组
1 如何定义字符数组

2 如何初始化一个字符数组(1用单个字符逐个赋值,2用字符串),输出字符数组的特殊方法cout<<字符数组名
char c[10]={‘I’,’ ‘,‘a’,‘m’,’ ‘,‘h’,‘a’,‘p’,‘p’,‘y’};//有点危险!!
char c[]={‘I’,’ ‘,‘a’,‘m’,’ ',‘h’,‘a’,‘p’,‘p’,‘y’};//有点危险!!



如果给的字符数小于数组长度会如何?(想想数值类型的数组)
对于数值型数组,初始化时,如果初始化元素的个数小于数组长度,未给出初始化值的部分。得到 值 为0
对于字符型数组,初始化时,如果初始化元素的个数小于数组长度,未给出初始化值的部分。得到 值 为0 (特殊标志,结束标志,’\0’ 与0 等价的。注意不是‘0’)
3 用字符串给字符数组赋初值时,如果不指定数组大小。数组大小是多少??双引号中有秘密!!!
在使用“”时,一定要注意,只要见到“”,系统会自动添加一个结束标志。因此,“abc”,占用4个字节
”“表示的内容,隐藏着一个结束标志。
可以在定义字符数组后,用字符串给这个字符数组赋值吗?
在定义一个字符数组之后,不允许对数组这样赋值。数组名不是变量,而是一个常量 。地址常量。数组在内存中的首地址。
4 定义两个字符数组,可以用一个给另一个赋值吗?
不允许使用一个数组名,为另一个数组赋值。
5 字符串长度如何算? 与数组长度相同吗?
数组的长度,是在定义数组时就确定 。数组中的内容可变,但是长度不会变。
而字符串的长度,是结束标志之前的字符数。
因此对于数组长度为n,内部存储的字符串的长度最长为n-1
字符串中可以有多个结束标志。长度是指第1个结束标志之前的字符数
“abc” 字符串长度为3 用它为数组初始化时,如果不指定数组大小,数组大小 是4
”a\0bc” 字符串长度为1 用它为数组初始化时,如果不指定数组大小,数组大小 是5
“\0abc” 字符串长度为0 用它为数组初始化时,如果不指定数组大小,数组大小 是5
6 下面几种初始化效果相同吗?
char s1[]={‘a’,’b’,’c’}; //数组长度为 3,3个字符 有危险
char s2[]=”abc”; //以下两种方式 初始化效果相同,数组长度为4,字符串长度为3
char s3[]={“abc”};
7 字符数组的输入与输出(逐个输入输出使用循环来完成,整体输入输出)
整体输出字符数组时:
使用cout输出时不包含结束符’\0’
输出时使用数组名
遇到结束标志就停止
如果有多个结束标志遇到第1个就停止
使用cin输入的问题是什么?cin>>数组名
使用Cin时,空格表示多个输入项之间的分隔。因此在输入字符串时,不能加空格。
如何解决??