本章概览
1.关键字介绍
- 关键字就是一些具有特殊意思的一些单词,比如:
if,int,while
等。这个int
,各位应该都熟悉吧!(对喽,前面咱们写过–int main()
),在C语言中,有些单词被赋予特殊含义 和用法,以供程序员们去使用,也就有了今天所说的关键字(是不是一点也不神 秘呀)。在C99之前,C语言中规定了32个关键字。如下所示: - 关键字的注意事项:
- 1.关键字是由C语言指定单词,是不能自己创建关键字的。
- 2.变量名不能与关键字重复。
- 注意一下下:
- 在C99之后,新增了一些关键字
inline,restrict, _Bool _, _Complex, _Imaginary
等关键字。 - 这些关键字不需要像背单词一样,不用去刻意背,后面我们都会讲到的,讲着讲着和你用着用着,自然而然就记住了。
- 在C99之后,新增了一些关键字
- 有关关键字的信息链接(感兴趣的朋友可以看一下哟)
C语言关键字全部介绍:https://zh.cppreference.com/w/c/keyword
2.字符和ASCII编码
- 字符
- 字符这玩意太常见了,我们现在所用的中文字体,英文字体等,都是字符。在C语言中用
''
括起来东西,被称为字符。比如:'a','0','\n'
等。
- 字符这玩意太常见了,我们现在所用的中文字体,英文字体等,都是字符。在C语言中用
- ASCII编码
- As we all know,计算机只能识别二进制指令,所以数据都是以二进制形式进行存储的(
后面会讲到数据在内存中的存储方式,各位期待一下
)。比如,10的二进制——000...1010
。我们知道数值可以通过与二进制的关系转换成二进制(点击:进制转换的方法)进行储存。但字符 与二进制没有半毛钱的关系。那怎么进行储存呢?,这个时候呢,美国国家标准学会(ANSI),就给每一个字符规定了一个二进制序列——编码。每个字符对应一个数值,这个数值就是ASCII值。(以十进制表示的值
),如图所示:
更多信息请参考:点击直达:https://zh.cppreference.com/w/cpp/language/ascii
- As we all know,计算机只能识别二进制指令,所以数据都是以二进制形式进行存储的(
- 这些ASCII值,我们不需要去记忆,用到的时候直接去查一下ASCII表就OK了。 不过,有几点我们还是要有所了解的(要记住的)
- 1.字符A ~ Z的ASCII码值从 65~ 90.
- 2.字符a ~ z的ASCII码值从97~122.
- 3.对应的大小写字符的ASCII码值的差值是32.
- 4.数字字符0~ 9的ASCII码值从48~57.
- 5.换行符\n的ASCII码值是:10.
- 6.这些字符中ASCII码值从0~31这32个字符是不可打印字符,无法打印在屏幕上观察。
- 可打印的字符代码展示:
下面展示一些 。
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
int i = 0;
for (i = 32; i < 127; i++) //因为32之前的字符是不可打印字符
{
printf("%c ", i);
}
return 0;
}
运行的结果,如图:
3.字符串和\0
- 字符串:
- 很好理解,就是由单个字符组成的,像糖葫芦一样给穿起来,用
""
括起来的东东就是字符串,比如"abcdef"
。
- 很好理解,就是由单个字符组成的,像糖葫芦一样给穿起来,用
- \0 :
- 这个字符具有结束的作用,用于字符串的结束标志。
- 接下来看一组代码,以便我们进行
'\0'
的讲解。下面展示一下 。
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
char arr1[] = "abcdef"; //打印字符串abcdef
char arr2[] = { 'a','b','c','d','e','f' };
printf("arr1=%s \n", arr1); //%s是字符串占位符,后面咱们会讲解的
printf("arr2=%s ", arr2);
return 0;
}
运行结果,如图所示;
如图所示,是打印字符串的两种不同形式。如代码所示,arr1
正常打印abcdef
,但arr2
却打印一些abcdef烫烫……
乱码。之所以会出现这两种情况,那是因为在arr1
里面的字符串abcdef
后面结尾处自动补个'\0'
,但在arr2
里面却没有它,所以就出现了两种不同结果。上面我们讲过'\0'
是停止标志位(结束标识符)。所以,在打印arr1
中的字符串的时候,是一个一个进行打印的‘,遇到'\0'
就结束打印。恰恰相反,在arr2
中,也会一个一个进行打印,但在打印abcdef
的过程中,由于没有遇到'\0'
,所以就不会停下打印,至于后面打印什么就一无所知了(所以就出现了乱码),直达后面随机出现一个'\0'
,才会停止,所以就出现了上图所示那样 “烫烫……” 之后就停止了。
- 修改后的代码,如图所示;
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
char arr1[] = "abcdef";
char arr2[] = { 'a','b','c','d','e','f','\0'};//加了字符'\0'
printf("arr1=%s \n", arr1);
printf("arr2=%s ", arr2);
return 0;
}
运行结果图:
这回可以看出来,在arr2
中加了字符'\0'
,后,就正常打印了。所以有和没有'\0'
,差别很大吧。,我们要记住,打印字符串的时候系统会自动在后面加'\0'
字符,而其他就不行了,比如arr2
.
4.转义字符
- 转义字符,顾名思义就是转变了原有字符的意思。以加个
\
的形式就转意了原本字符的意思。C语言中的转义字符如下所示:
常用型:
不常用型:
转义字符参考
:https://zh.cppreference.com/w/c/language/escape - 挑几个进行简单的讲解(大家可以自己去试试):
'\?'
这个标识符的作用是防止信息被编译器解析成三字母词,(当然现在的新版的编译器已经没这个问题了),以前旧版本编译器有这个诟病。比如,我想输入printf("(are you ok??) ")
,在旧版本的编译器中,会把连续的?
和)
转换成]
,即:??)------>]
,所以在老版本中为了解决这个问题,就加了个'\?'
,防止被解析成三字母词。- ‘\n’,相必大家在前面的代码中都见到过了吧,它就是换行符,就是为了美观,老是打印信息在一行也不好看,对吧。给大家看看有和没有
'\n'
的区别:
是不是都打印在一行很不美观,不便于观察信息。 - '\ddd’的用法,
ddd表示1~3个八进制数字
,可以认为它就是字符的八进制表示方法. 1位,2位,3位数字都OK,只要是八进制就OK, 比如。'\123'
对应的十进制(ASCII码值)—83
—对应的字符是'S'
,代码展示;
- ‘\n’,相必大家在前面的代码中都见到过了吧,它就是换行符,就是为了美观,老是打印信息在一行也不好看,对吧。给大家看看有和没有
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
printf("%c", '\123');
return 0;
}
结果运行图:
- ’\xdd‘ ,就是字符的十六进制表示方法,可以类比上面的
\ddd
,别忘了dd表示 数字哟,在这里就不再详细概述了,直接上代码展示:
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
printf("%c", '\x23');
return 0;
}
运行结果:
剩下的转义字符,请大家自行试试
5.看图放松一下呗!!!
请边听歌边看图片放松e下 https://y.qq.com/n/ryqq/player
人生不止眼前的苟且,还有诗和远方。
感谢你能看到这里,点赞+关注+收藏是对我最大的鼓励,谢谢!!! 各位,我们下期见!