2.3.3 字符型
文字处理是计算机的一个重要应用领域,这个应用领域的程序必须能够使用和处理字符形式的数据。字符型数据存储的是字符的ASCII码,一个字符占一个字节。
比如字符‘x’的十进制ASCII 码是120,字符‘y’的十进制ASCII 码是121。对字符变量a、b 赋予'x'和'y'值:
- a='x';
- b='y';
实际上是在a、b两个单元内存放120 和121的二进制代码:
所以也可以把字符看成是整型量。C语言允许对整型变量赋予字符值,也允许对字符变量赋予整型值。在输出时,允许把字符变量按整型格式输出,也允许把整型量按字符格式输出,如程序2.1。
【程序 2.1】向字符变量赋予整数:test1.c。
- #include <stdio.h>
- main()
- {
- char a,b; /*定义两个字符型变量*/
- a=120; /*给字符型变量赋整数值*/
- b=121;
- printf("%c,%c\n",a,b); /*以字符格式输出变量值*/
- printf("%d,%d\n",a,b); /*以整型格式输出变量值*/
- }
程序运行结果如下:
- x,y
- 120,121
可以看到,当以字符格式输出变量值时,结果是ASCII码值120 和121 分别对应的字符x 和y,而以整型格式输出变量值时,结果是一个整型数。
说明
printf()函数称为格式输出函数,它的调用形式为:
printf ("格式控制字符串", 输出项表);对于printf()函数格式串中的格式符,当格式符为“%c”时,对应输出的变量值为字符,当格式符为“%d”时,对应输出的变量值为整数。详细格式请参见2.6.3 小节。
除了以上形式的字符常量外,还有一种特殊的字符常量叫转义字符。转义字符以反斜线“\”开头,后跟一个或几个字符。转义字符具有特定的含义,不同于字符原有的意义,故称“转义”字符。转义字符主要用来表示那些用一般字符不便于表示的控制代码。表2.3 列出了C语言中常用的转义字符。
表2.3 常用的转义字符及其含义
广义地讲,C语言字符集中的任何一个字符均可用转义字符来表示。表中的\ddd 和\xhh正是为此而提出的。ddd和hh分别为八进制和十六进制的ASCII代码。如\101表示字母"A" ,\102 表示字母"B",\134 表示反斜线,\XOA表示换行等。
字符变量用来存储字符,一个字符型变量占用一个字节的内存容量,字符变量的类型说明符是char。字符变量类型定义的格式和书写规则都与整型变量相同。例如:
- char a,b;
字符串常量是由一对双引号引起来的字符序列。例如:"CHINA" ,"C program","$12.5"等都是合法的字符串常量。
注意,字符串常量和字符常量是不同的量,它们之间主要有以下区别:
字符常量由单引号引起来,字符串常量由双引号引起来。
字符常量只能是单个字符,字符串常量则可以包含一个或多个字符。
可以把一个字符常量赋予一个字符变量,但不能把一个字符串常量赋予一个字符变量(在C语言中没有相应的字符串变量),但是可以用一个字符数组来存放一个字符串常量(数组将在2.10 节予以介绍)。
字符常量占一个字节的内存空间,字符串常量占的内存字节数等于字符串中字节数加1。增加的一个字节中存放字符"\0"(ASCII码为0),它是字符串结束的标志。例如,字符串"C program" 在内存中所占的字节为:
字符常量'a'和字符串常量"a"虽然都只有一个字符,但在内存中的情况是不同的。'a'在内存中占一个字节,可表示为:
"a"在内存中占两个字节,可表示为: