(三)知识准备

(三)知识准备

在C语言中,字符串常量是用双引号(" ")括起来的一串字符(0个或者多个字符),例如"Huawei"、"Xiaomi"、""(空字符串)等。

C语言中没有字符串变量,要在程序中存储字符串,有两种方式:

① 用字符数组存放一个字符串。

② 用字符指针指向一个字符串。

1.用char型数组保存字符串

字符串由多个字符组成,可用一个char型的一维数组来保存字符串。注意:一个字符型数组只能保存一个字符串。

字符串末尾须有字符'\0'表示字符串的结束,所以,用char型数组保存字符串时,数组中须有'\0'元素,否则它只是一个数组。

例如:

(1)

定义了char型数组c,在数组名后的[]内没有明确数组元素的个数,通过{}中的初始值进行c的初始化。初始值有6个字符,因此数组c中有6个元素。但是由于没有'\0'元素结尾,所以数组c只能作为char型数组使用,不能当作字符串使用。

字符串存储示意图如图8-32所示。

图8-32 字符串存储示意图

(2)

定义了char型数组d,在数组名后的[]内没有明确数组元素的个数,通过{}中的初始值进行d的初始化。初始值有7个字符,因此数组d中有7个元素。但是由于是以'\0'元素结尾的,所以数组d不仅能作为char型数组使用,还能当作字符串使用。

(3)

定义了char型数组e,在数组名后的[]内中明确了数组有10个元素,通过{}中的初始值进行e的初始化。初始值有6个字符,因此数组e中前6个元素有了初始值,后4个元素自动补了0('\0'),所以数组e不仅能作为char型数组使用,还能当作字符串使用。

以上定义char型数组赋初值,通过对每个元素单独赋字符,来实现用char型数组保存字符串的操作,十分麻烦。

以下方式是用char型数组保存字符串时的简便用法:

还可以省略{},如下:

上述两种写法与char d[] = {'H','u','a','w','e','i','\0'};的写法等效。

2.用字符指针指向一个字符串

在C语言中,可以将字符串的首地址赋给char *型的指针变量,在char *型指针中保存字符串的首地址。

一对" "引起来的一串字符称为字符串常量,这个字符串常量可以看作一个表达式,该表达式的值就是字符串常量的首地址。

如下所示:

将字符串常量"Huawei"看作表达式,则表达式的值为这个字符串常量的首地址。

先定义char *型指针变量pstr,然后通过赋值语句为pstr赋值。

先定义一个char型数组d,并用一个字符串常量进行初始化,数组d包含7个元素。之后定义char *型指针变量pstr,语句pstr = d;相当于指针变量之间的赋值。