转义符:
例子
int main()
{
printf("c:\code\test.c\n");
return 0;
}
结果
可以看出,代码并没有像我们想象的那样打印出来。这就是因为转义字符的原因了。
什么是转义字符呢?顾名思义,从字面意思我们可以看出,转义字符会让某一个符号的含义改变。他可以赋予一些普通的字符特殊的含义,也可以让一些有特殊含义的字符回归普通。
详解常见的转义字符
1 转义字符 “\?”
作用:在书写连续多个问号时使用,防止他们被解析成三字母词
2 转义字符 “ \' ”
作用:用于表示字符常量
举例:
#include<stdio.h>
int main()
{
printf("\'");//将会打印一个'(单引号)
return 0;
}
3 转义字符 “ \" ”
作用:用于表示一个字符串内部的双引号
举例:
#include<stdio.h>
int main()
{
printf("\"");//将会打印出"(双引号)
return 0;
}
4 转义字符 “ \\ ”
作用:用于表示一个反斜杠,防止它被解释为一个转义序列符。
举例:
#include<stdio.h>
int main()
{
printf("\\");//将会打印出\(反斜杠)
return 0;
}
5 转义字符 “ \a ”
作用:警告字符,蜂鸣。
6 转义字符 “ \n ”
作用:换行
举例:
#include<stdio.h>
int main()
{
printf("abc\ndef");//将会打印出abc与def在二行中
return 0;
}
6 转义字符 “ \r ”
作用:回车
7 转义字符 “ \t ”
作用:水平制表符
说明:相当于按一下键盘上的tab键。
8 转义字符 “ \ddd ”
作用:ddd表示1~3个八进制的数字。 如: \130
举例:
#include<stdio.h>
int main()
{
printf("%c\n",'\130'); //打印X
//8进制:130
//10进制:88(SCII:X)
return 0;
}
9 转义字符 “ \xdd ”
作用:dd表示2个十六进制数字。 如: \x44
举例:
#include<stdio.h>
int main()
{
printf("%c\n", '\x44'); //打印D
//16进制:x44
//10进制:68(SCII码:D)
return 0;
}
总结
介绍完上面的,那么转义字符到底怎么用呢?我们用一道题目来说明。
题目:打印 \test\628\test.c
举例:
#include<stdio.h>
int main()
{
printf("\\test\\628\\test.c\n");//其中的\t 水平制表符
//\62 八进制
//为了防止他们被转义所以我们需要加上“\”
return 0;
}
字符常量:
利用char声明
字符常量用于储存字母和其它字符,本质上储存的是整数(ASCII字符集)而不是字符。
#include<stdio.h>
int main()
{
char a = 'd';//c语言中用单引号括起来的就是字符常量。
char b = 0B01100100;//字符以数值形式储存。
printf("%d\n%c", a, b);
}
运行结果:
100
d
注意的问题
C语言将字符常量视为int类型而非char类型。
char grade = 'B’ 本来’B’对应的数值66储存在32位的存储单元中,现在却可以储存在8位的存储单元中。利用字符常量的这种特性,可以定义一个字符常量 ’FATE’ ,即把4个独立的8位ASCII码储存在一个32位存储单元中。如果把这样的字符常量赋给char类型变量 grade ,只有最后8位有效。因此, grade 的值是 E.
char ‘a’与char‘asdsadsa’相同
char只存储一个字符。
字符数组:
一个字符在内存中只占一字节,而字符串本质上是多个字符组成的字符数组。
C语言规定,在每一个字符串常量的结尾,系统都会自动加一个字符 ’\0’ 作为该字符串的“结束标志符”,系统据此判断字符串是否结束。这里要特别强调一点: ’\0’ 是系统自动加上的,不是人为添加的。
’\0’ 它不会引起任何控制动作,也不是一个可以显示的字符。
比如字符串常量"CHINA",表面上看它只有5个字符,但实际上它在内存中占6字节,‘C’、‘H’、‘I’、‘N’、‘A’、’\0’ 各占一字节。如果要输出该字符串,’\0’ 不会输出。也就是说,虽然实际上总共有 6 个字符,’\0’ 也包括在其中,但输出时 ‘\0’ 不会输出。系统从第一个字符 ‘C’ 开始逐个输出字符,直到遇到 ‘\0’,则表示该字符串结束,停止输出。
错题
int main(int argc, char *argv[]) {
char a,b;
a='a';
b='b';
a=a-32;
b=b-32;
printf("%c,%c,%d,%d\n",a,b,a,b) ;
return 0;
}
A B 65 66
补充:
C语言没有字符串,C++有字符串。
C语言存入字符串用的是字符串。
例子
char a[n]//定义一个数组
gets [a];将字符存入数组当中
puts [a];将字符输出去。