1.用来存放字符数据的数组是字符数组,字符数组中的一个元素存放一个字符。
    2.字符数组的定义

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

    批注 2020-08-11 095912.png

    1. char st1[] = {65,66,68};
                 ![批注 2020-08-11 095912.png](https://cdn.nlark.com/yuque/0/2020/png/2314091/1597122891807-962838ad-5495-4d07-bee4-895de58685c5.png#align=left&display=inline&height=50&margin=%5Bobject%20Object%5D&name=%E6%89%B9%E6%B3%A8%202020-08-11%20095912.png&originHeight=50&originWidth=242&size=35052&status=done&style=none&width=242)
    
    • 如字符个数大于数组长度,做错误处理;如果数值个数小于数组长度,后面的字节全部为’\0’.
    • 如果省略数组长度,则字符数即为数组长度。

      static char c[]={‘I’, ‘ ’, ‘a’, ‘m’, ‘ ’, ‘a’, ‘ ’ , ‘g’, ‘i’, ‘r’,’l’};
      
    • 也可以定义和初始化一个二维或多维的字符数组,分层或省略最后一维。

    4.字符数组的赋值与引用

    • 在初始化完成后,只能对字符数组的元素赋值,不能对整个数组赋值

    5.字符串和字符串结束标志

    • C++将字符串作为字符数组处理
    • 字符串常量在机内被处理成一个无名的字符型一维数组。

    例:“CHINA”
    批注 2020-08-11 095912.png

    • C++用’\0’作为字符串的结束标志,它占内存空间,但不计入串长度。程序往往根据它判断字符串是否结束,而不是根据定义时设定的长度。

    6.字符串与字符数组的区别

    • 字符数组

      char a[]={‘C’,’H’,’I’,’N’,’A’};
      

      批注 2020-08-11 095912.png
      长度占5个字节。

    • 字符串

      char c[ ]=“CHINA”;
      
      ![批注 2020-08-11 095912.png](https://cdn.nlark.com/yuque/0/2020/png/2314091/1597126082148-a8168431-5bd1-479b-bcca-4e4186af72c8.png#align=left&display=inline&height=41&margin=%5Bobject%20Object%5D&name=%E6%89%B9%E6%B3%A8%202020-08-11%20095912.png&originHeight=55&originWidth=521&size=35052&status=done&style=none&width=391)
      
    • 字符数组中字符串长度和数组长度并不一致.

    • 数组长度总是比字符串长度达,最后一个字节填’\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