当前位置:学者斋 >

计算机 >C语言 >

C语言字符型基础知识

C语言字符型基础知识

字符型是C语言的常考知识点,下面小编为大家带来了关于C语言字符型的基础知识,欢迎大家阅读!

C语言字符型基础知识

  C语言字符型基础知识

  1. 字符型数据

文字处理是计算机的一个重要应用领域,这个应用领域的程序必须能够使用和处理字符形式的数据。在C语言中,字符型数据包括字符和字符串两种,例如'a'是字符,而"Windows" 是字符串。

字符型数据在计算机中存储的是字符的ASCII码(ASCII码表见附录A),一个字符的存储占用一个字节。因为ASCII码形式上就是0 到255之间的整数,因此C语言中字符型数据和整型数据可以通用。例如,字符"A"的ASCII码值用二进制数表示是1000001,用十进制数表示是65,在计算机中的存储示意图见图3-6。由图可见,字符"A"的存储形式实际上就是一个整型数65,所以它可以直接与整型数据进行算术运算、混合运算,可以与整型变量相互赋值,也可以将字符型数据以字符或整数两种形式输出。以字符形式输出时,先将ASCII码值转换为相应的字符,然后再输出;以整数形式输出时,直接将ASCII码值作为整数输出。

  2.字符型常量

字符常量亦被称为字符常数。C语言中字符常量是括在一对单引号内的一个字符。 例如:'x'、'B'、'b'、'$'、'?'、' '(表示空格字符)、'3'都是字符常量,注意其中'B'和'b'是不同的字符常量。

除了以上形式的字符常量外,对于常用的但却难以用一般形式表示的不可显示字符,C语言提供了一种特殊的字符常量,即用一个转义标识符""开头,后续需要的转义字符来表示。常用的转义字符序列的字符常量见表3-4。

转义字符是一种特殊形式的字符常量,其意思是将转义符""后的字符原来的含义进行转换,变成某种另外特殊约定的含义。

例如,转义字符""中的n已不代表字符常量"n",由于n前面是转义符"",所以n就转义成换行。转义字符"15"是"ddd"形式的转义字符,其中"015"是八进制字符串,它表示了ASCII码表中编码为十进制13的字符,也就是回车。转义字符"x1f"是"xdd"形式的转义字符,其中"1f"是十六进制字符串,它表示了ASCII码表中编码为十进制31的字符,也就是▼。

可见,用转义字符方法可以表示任何可显示或不可显示的字符。在实际应用中,转义字符的使用很多,例如:例3-2中有以下程序行:

printf("a=%f,b=%f",a,b);

其中的""就是转义字符换行。几乎每个程序中都会有一个或若干个这样的程序行。要注意其使用。

  3. 字符型变量

字符型变量用于存放字符常量,即一个字符型变量可存放一个字符,所以一个字符型变量占用1个字节的内存容量。说明字符型变量的关键字是char,使用时只需在说明语句中指明字符型数据类型和相应的变量名即可。例如:

char s1, s2; /* 说明 s1,s2 为字符型变量 */

s1='A'; /* 为s1赋字符常量'A' */

s2='a'; /*为s2赋字符常量'a' */

  4. 字符串常量

字符串常量是用一对双引号括起来的字符序列。这里的双引号仅起到字符串常量的边界符的作用,它并不是字符串常量的一部分。例如下面的'字符串都是合法的字符串常量:

"I am a student.","ABC"," ","a"

注意不要把字符串常量和字符常量混淆,如"a"和'a'是根本不同的数据,前者是字符串常量,后者是字符常量。如果字符串常数中出现双引号,则要用反斜线'"'将其转义,取消原有边界符的功能,使之仅作为双引号字符起作用。例如,要输出字符串:

He says:"How do you do."

应写成如下形式:

printf ("He says:"How do you do."");

C语言对字符串常量的长度不加限制,编译程序总是自动地在字符串的结尾加上一个转义字符''(即ASCII码是0,所对应的字符是空),作为字符串常量的结束标志。对字符串操作时,这个结束标志是非常重要的。例如输出字符串时,遇到这个结束标志才终止输出。

可见,字符常量与字符串常量的区别有两个方面:从形式上看,字符常量是用单引号括起的单个字符,而字符串常量是用双引号括起的一串字符;从存储方式看,字符常量在内存中占一个字节,而字符串常量除了每个字符各占一个字节外,其字符串结束符''也要占一个字节。例如:字符常量'a'占一个字节,而字符串常量"a" 占2个字节,如图3-7示意图所示。

C语言没有专门的字符串变量,如果需要处理字符串,一般用字符型数组来实现。关于字符数组及其它字符数据处理问题在本书第八章作详细介绍。

  5. 字符数据的应用举例

例3-3:计算字符'A'与整型数据25的和。

/* L3_3.C */

Main()

{ char a; /* 说明a为字符型变量 */

int b; /* 说明b为整型变量 */

a='A'; /* 为a赋字符常量'A' */

b=a+25; /* 计算65+25并赋值给字符变量b */

printf("%c,%d,%c,%d",a,a,b,b); /* 分别以字符型和整型两种格式输出a、b */

}

程序运行的输出结果如下:

A,65,Z,90

上述程序中a变量的值是'A',实际存放的是'A'的ASCII码65,它可直接与十进制整型常量25相加,所得整型数据90赋值给变量b,而90是大写字符'Z'的ASCII码,所以可以将a、b变量分别以字符型和整型两种格式输出。可见字符型数据和整型数据是可以通用的。

标签: 字符 语言
  • 文章版权属于文章作者所有,转载请注明 https://xuezhezhai.com/jsj/cyuyan/m9ppw.html