在计算机处理流程中,不只能处理数值,也能处理非数值。字符类型的应用是计算机在非数值处理的重要方面之一。在前面已经介绍过,数组元素的类型可以是任何类型,那当然也包括字符类型。当数组元素是数组类型时,我们称此数组为字符数组。

下面先介绍字符类型。

字符类型

C++基础(3)中,已经介绍过了字符类型的具体内容,本次重点介绍和数组结合操作。字符类型是由一个字符组成的常量或者变量。字符类型是可以比较大小的,也就是说它是一个有序的类型,它的大小顺序按其ASCII代码的大小而定。

【题目】按字母表顺序输出小写字母。

1
2
3
4
5
6
7
8
#include<iostream>
using namespace std;

int main(){
    for(char letter = 'a'; letter <= 'z'; letter++)
        cout << letter << " ";
    return 0;
}

在上述程序中,利用字符类型是有序类型这一特点,可以使用字符变量作为循环变量,也就是说,字符变量可以做加减运算,这在C++基础(3)中也介绍过,不再赘述。

字符数组

字符数组是指元素为字符的数组。字符数组也有一维、二维和三维之分。定义格式和数组相同,如下:

1
2
char c1[5];
char c2[5][3];

字符数组的初始化、赋值、引用和其他数组也一样。

1、用字符进行初始化数组

1
char c1[5] = {'a','b', 'c', 'd', 'e'};

初始值中每一项都是一个字符。这就是用字符来初始化数组。与其他数组一样,当初始字符的个数少于数组定义的元素个数时,从首元素开始赋值,剩余元素默认为空字符。

注意

字符数组中也可以存放许多字符,也可以来存放字符串。两者的区别是字符串的最后有结束符('\0')。反过来说,在一维字符数组中存放着带有结束符的若干个字符称为字符串。字符串是一 维数组,但是一维字符数组并不一定是字符串。如下:

1
2
char c2[5] = {'a','b', 'c', 'd', '\0'};
char c3[5] = "abcd";

在上面定义的数组c2c3是一样的,都存放了字符串"abcd",只是两种初始化的方式不同,c2用字符进行初始化,c3用字符串进行初始化。

在使用字符串进行初始化时,注意字符串的长度最大长度等于字符数组的大小减1。

字符和字符串的区别

1、两者的定界符不同,在C++中,字符常量由单引号''括起来,字符串常量由双引号""括起来。

2、字符常量只能是单个字符,字符串常量可以是单个字符也可以是多个字符。

3、可以把一个字符常量赋给一个字符变量,但不能把一个字符串常量赋给一个字符变量。

4、字符常量占一个字节,而字符串常量占用字节数等于字符串的字节数加1。增加的一个字节中存放字符串结束标志'\0'。例如:字符常量'a'占一个字节,字符串常量"a"占两个字节。

下一次介绍字符串string类型。

公众号:格致书院