1.用来存放字符数据的数组是字符数组,字符数组中的一个元素存放一个字符。
2.字符数组的定义
- char 数组名[ 常量表达式 ]; ```cpp char c[4]; //每个元素占一个字节 c[0]=’I’;c[1]=’m’;c[2]=’_’;
**3.字符数组的初始化**
- 与数值数组的初始化相同,取其相应的ASCLL值。<br />
```cpp
char c[10]={'I',' ','a','m',‘ ’, ‘a’, ‘ ’ , ‘b’, ‘o’, ‘y’};
char st1[] = {65,66,68};

- 如字符个数大于数组长度,做错误处理;如果数值个数小于数组长度,后面的字节全部为’\0’.
如果省略数组长度,则字符数即为数组长度。
static char c[]={‘I’, ‘ ’, ‘a’, ‘m’, ‘ ’, ‘a’, ‘ ’ , ‘g’, ‘i’, ‘r’,’l’};
也可以定义和初始化一个二维或多维的字符数组,分层或省略最后一维。
4.字符数组的赋值与引用
- 在初始化完成后,只能对字符数组的元素赋值,不能对整个数组赋值
5.字符串和字符串结束标志
- C++将字符串作为字符数组处理
- 字符串常量在机内被处理成一个无名的字符型一维数组。
例:“CHINA”
- C++用’\0’作为字符串的结束标志,它占内存空间,但不计入串长度。程序往往根据它判断字符串是否结束,而不是根据定义时设定的长度。
6.字符串与字符数组的区别
字符数组
char a[]={‘C’,’H’,’I’,’N’,’A’};
长度占5个字节。字符串
char c[ ]=“CHINA”;

字符数组中字符串长度和数组长度并不一致.
- 数组长度总是比字符串长度达,最后一个字节填’\0’.
7.字符数组的输入和输出
- 逐个字符输入输出。通常用循环语句实现。
如:
char str[10];
cout<<“输入十个字符:”;
for(int i=0;i<10;i++)
cin>>str[i];//将输入的十个字符依次送给数组str中的各个元素。
- 把字符数组作为字符串输入输出。对于一维数组的输入,在cin中仅给出数组名,输出时,在cout中也只给出数组名。
如:
void main (void )
{char s1[50],s2[60];
cout << “输入二个字符串:”;
cin >> s1;
cin >> s2;
cout << “\n s1 = “ << s1;
cout << “\n s2 = “ << s2 << “\n”;//输出到'\0'为止
}
- cin只能输入一个单词,不能输入一行单词。
- 如要输入一行单词作为一个字符串送到字符数组中,需要使用函数
cin.getline(数组名,数组空间数),该函数第一个参数为字符数组名,
第二个参数为运行输入的最大字符个数。
- 例: ```cpp
void main (void ) { char s3[81]; //定义 cout<<”输入一行字符串:”; cin.getline(s3,80); //从键盘接收一行字符 cout<<”s3=”<<s3<<’\n’; //输出到’\0’为止 } ``` 当输入行中的字符个数小于80时,将实际输入的字符串(不包括换行符)全部送给s3;当输入行中的字符个数大于80时,只取前面的80个字符送给字符串。
8.字符串处理函数
- C++中没有对字符串变量进行赋值、合并、比较的运算符,但提供了许多字符串处理函数,用户可调用#include “string.h”。
- 所有字符串处理函数的实参都是字符数组名。
- 字符串处理函数
- 字符串连接函数strcat
- 字符串复制函数strcpy
- 字符串长度函数strlen