一、字符串
这里涉及到的格式字符和转义字符(在本章后面提到,当前只需要理解字符串即可)
1.%c 2.%s 3.\0 4.\n
1.字符串的定义:由双引号("")括起来的一串字符称字符串字面值,简称字符串(也可以由多个单字符组成)。注意:字符串的结束标志是一个"\0",即遇到\0就结束当前程序
2.怎么用字符串:
存储或者打印字符串一般是用数组(后续会提到)来实现,printf是打印函数,用来打印数据
(1)表示单个字符:用单引号('')直接定义即可。如:char a='x'; 定义了一个字符变量a,对其赋值为X
char a = 'X';
printf("%c\n",a);//注意格式
(2)定义一维数组字符串:
第一种:用双引号引起的
char arr1[]="abcd";
printf("%s\n", arr1);
打印结果:
1)定义了一个字符(char)一维数组(arr1),该数组里面存放的数据为:abcd;
2)打印操作:由于该字符串是用双引号表示,所以在该字符串末端隐藏了\0;在进行打印字符串操作时,\0不会被打印出来,也就是说,只会打印\0前面的字符。
3)计算字符串长度操作:在进行计算字符串的长度操作时,\0不会计入长度,他只作为结束标志。就是说,当计算到\0时,该计算便停止,长度即为\0前面的长度。
第二种:由多个单字符组成
1)错误写法:
char arr2[] = {'a','b','c','d'};
printf("%s\n", arr2);
打印结果:
打印操作:为什么除了打印abcd外还会打印这么多文字呢?原因是:这种表示由单引号表示字符串的方式,结尾没有自带\0,意味着找不到结束的信号,导致程序不能按照预期的结果实现
计算字符串长度操作:因为没有\0,所以计算长度得出来的结果为随机值。
2)正确写法:
char arr3[] = { 'a','b','c','d','\0'};
printf("%s\n",arr3);
打印结果:
打印操作:这里打印出来的结果只有abcd,因为我们主动加了\0;所以打印到\0时便结束了该程序
计算字符串长度操作:遇到\0结束计算,\0不会计入长度。
3.需要避免的问题:
1)定义时注意为字符类型(char)
2)注意单引号和双引号的使用格式
3)注意单个字符和字符串的打印格式
完整代码:
#include<stdio.h>
int main()
{
char a = 'X';//单个字符的打印
char arr1[] = "abcd";//第一种存储字符串的方式
char arr2[] = {'a','b','c','d'};//第二种
char arr3[] = { 'a','b','c','d','\0'};//第二种(注意与arr2的区别)
printf("%c\n",a);//注意格式
printf("%s\n", arr1);
printf("%s\n", arr2);
printf("%s\n",arr3);
return 0;
}
二、转义字符
1.转义字符的定义:一种特殊形式的字符常量;说坤语就是:转变原来的意思。表示形式为:以斜杠(\)开头
注意是\,形状可以记成左上右下,要与/(除号)区别开来
下面是一些转义字符及其大致含义,我们下面将逐一介绍(有些不常用甚至不考我们不做解释,加*为比较常见)
2.格式字符
定义:在printf函数中输出的形式。
(1)%d:以十进制的形式打印整形。例:假如变量a的值为250,则输出的结果为250
一般表示形式:printf("%d",a); 在这里%d表示输出的格式,a表示输出的数
(2)%s:打印字符串
(3)%c:打印单个字符
3.转义字符
*(1)\n 换行符
作用:将当前光标位置移到下一行开头(不好文字描述,直接上图)
不加\n:
加了\n:
不加\n:
加了\n:
总结:如果不加\n,打印的数据就会全部在一行上面。\n可以将它后面的内容换到下一行。
*(2)\0 结束标志
在双引号下的字符串末尾自带\0,也可以自己随意任意位置添加。单引号下需要自己加上。
作用:由上可知,该转义字符出现在字符串后面,作为结束标识。当计算或打印该字符串时,以遇到\0为结束标志,不再计算和打印\0后面的内容。
在字符串上面以详细提及,这里不做过多解释。
(3)\\ 一个反斜线
输出结果:\
目的:防止想要打印出来的\与其他符号组成转义字符而转变成其他意思。
(4)\?\?) 三字母词
作用:放在??)被转义为]
老版本编译器存在
(5)\, 一个逗号
输出结果:,
(6)\" 一个分号
输出结果:"
(7)\a 警告
作用:在程序运行的时候电脑会鸣笛一声。
(8)\b 退格符
作用:打印结果时,覆盖掉\b前面的字符
正常输出:
不正常输出:
总结:在输出字符的时候,会直接覆盖\b前面的字符,而输出文字则是直接省略,中间有一小段空格。
(9)\t 水平制表符
作用:与四个空格的结果相同(与见键盘上的Tab键作用相同,跳四格)。
*(10)\ddd 与该八进制码对应的ASCII字符
输出结果:字符
ddd表示三个八进制数字
如;\130 八进制的130转化为十进制的88 再通过ASCII字符表找到对应的字符并输出,88对应的字符为X,所以\130会输出X.
#include<stdio.h>
int main()
{
printf("%c",'\130');
return 0;
}
注意:ddd只能由0-7的数字组成;如果转化成的十进制数字不在ASLII字符表范围内,则无效
(11)\xdd 与该十六进制码对应的ASLII字符
输出结果:字符
x表示十六进制的意思,dd表示两个十六进制数字
如:\x30 30为十六进制的表现形式,转化为十进制数为48,在ASLII字符表中对应的字符为0;
所以输出结果为0.
#include<stdio.h>
int main()
{
printf("%c",'\x30');
return 0;
}
注意:dd只能为0-15的数字,转化成十进制的数字不在ASLII字符范围同样无效
三.注释
作用:用于解释代码或防止解释的东西导致程序运行错误
两种注释方法
1.c语言风格:/*xxxxxx*/,xxxxxx为被注释掉的内容
2.c++风格://xxxxxxxx,xxxxxxxx为被注释掉的内容
图中黑色框框内即为被注释掉的内容,不再参与代码运行