2.3 字符型(char)
加上差异的修饰符, 可以界说有标记和无标记两种范例的字符型变量, 譬喻:
char a: /*a被界说为有标记字符变量*/
unsigned char l; /*l被界说为无标记字符变量*/
字符在计较机中以其ASCII码方法暗示, 其长度为1个字节, 有标记字符型数取值范畴为-128~127, 无标记字符型数到值范畴是0~255。因此在Turbo C语言中,字符型数据在操纵时将按整型数处理惩罚, 假如某个变量界说成char,则表白该变量是有标记的, 即它将转换成有标记的整型数。
Turbo C中划定对ASCII码值大于0x80的字符将被认为是负数。譬喻ASCII值为0x8c的字符,界说成char时,被转换成十六进制的整数0xff8c。这是因当ASCII码值大于0x80时,该字节的最高位为1,计较时机认为该数为负数,对付0x8c暗示的数实际上是-74(8c的列位取反再加1),而-74转换成两字节整型数并在计较机中暗示时就是0xff8c(对0074列位取反再加1)。因此只有界说为
unsigned char 0x8c转换成整型数时才是8c。这一点在处理惩罚大于0x80的ASCII码字符时(譬喻汉字码)要出格留意。一般汉字均界说为unsigned char(在今后的措施中会常常遇到)。
别的,也可以界说一个字符型数组(关于数组后头再作具体先容),此时该数组暗示一个字符串。
譬喻:
char str[10];
计较机在编译时, 将留出持续10个字符的空间, 即str[0]到str[9]共10个变量,但只有前9个供用户利用。第10个str[9]用来存放字符串终止符NULL即"\0",但终止符是编编译措施自动加上的, 这一点应出格留意。
二、字符常数暗示
能用标记暗示的字符可直接用单引号括起来暗示, 如’a’, ‘9’, ‘Z’, 也可用该字符的ASCII码值暗示, 譬喻十进制数85暗示大写字母’U’, 十六进制数0x5d暗示 ‘]’, 八进制数0102暗示大写字母’B’。
一些不能用标记暗示的节制符, 只能用ASCII码值来暗示, 如十进制数10 暗示换行,下六进制数0x0d暗示回车, 八进制数033暗示Esc。Turbo C2.0中也有别的一种暗示暗示要领, 如’\033’暗示Esc, 这里’\ 0′ 标记后头的数字暗示十六进制的ASCII值虽然这种暗示要领也合用于可睦接用标记暗示的字符。
别的, Turbo C2.0中有些常用的字符用以下非凡划定来暗示:
划定符 等价于 寄义
‘\f’ ‘\X0C’ 换页
‘\r’ ‘\X0D’ 回车
‘\t’ ‘\X09’ 制表键
‘\n’ ‘\X0A’ 换行
‘\\’ ‘\X5C’ \符
‘\” ‘\X27’ ‘符
‘\"’ ‘\X22’ "符
对付字符串常量, 一般用双引号括起来暗示, 如"Hello Turbo C2.0"。
2.4 指针型(*)
指针是一种非凡的数据范例, 在其它语言中一般没有。指针是指向变量的地点,实质上指针就是存贮单位的地点。按照所指的变量范例差异,可以是整型指针(int *)、浮点型指针(float *)、字符型指针(char *)、布局指针(struct *)和连系指针(union *)(布局指针和连系指针将在第4节中先容)。
2.5 无值型(void)
无值型字节长度为0, 主要有两个用途: 一是明晰地暗示一个函数不返回任何值; 一是发生一个同一范例指针(可按照需要动态分派给其内存)。
譬喻:
void *buffer; /*buffer被界说为无值型指针*/