00:02
字符类型,Char。我们先看一下字符类型的基本介绍,字符类型呢,可以表示单个的字符,比如说A呀,B呀,或者是一这样的字符。那这里面首先要明白一点,就是char呢,它是一个字,也。一个字节就是它的空间是一个字节。可以存放字母或者是数字。可以存放字母或者数字,比如说这样的数字。引起来的这种哈,引起来的你引起来的数字这字符,或者你这样存也可以圈。A等于一也可以。也可以,你给他一个一,最后输出来的这个字符呢,其实是一对应的那个阿斯克玛对应的字符,后面我们还会说。多个字符呢,我们就称之为字符串,在C语言中用char数组来表示字符串数组因为不是基本的数据类型,而是构造类型,所以说我们数组呢,放在后面讲。
01:06
同学们来看一段关于字字符的类型,你比如说我给他一个A。引起来哈,这个要引,如果你没有这个引单引号,这个就不对了,一定要引起来才表示一个字符,这点大家请注意。你比如说你给他一个零引起来,这个就代表给一个零这样的字符或者是转义符输出这个内容呢,可以用什么呀?用这个百分号C,就表示我要按照字符的形式输出,注意听这句话百分号C。表示以字符的字符。字符的形式。字符的形式输出。理解。接着我们继续往下面看。字符的使用细节呢,我这里一共整理了五点,咱们过一过。
02:00
首先呢。首先同学们看到首先。我们使用这个单引号把它引起来才是字符,第2.c中允许存放这个转义符,比如说字符串,我们C1给的是这种转移,呃,换行也是可以的。知道吧,就是你可以把转移符也放在我们的一个字符里面,你不能这样算哈,你比如说诶斜杠是一个,N是一个就不对了,它整体的算一个转移字符作为换行符存到C3里面的。在C中呢,Char的本质它就是一个整数,在输出的时候呢,是阿斯柯玛对应的字符,这句话怎么理解呢?我给同学们举个例子。我要给同学们举个例子,这里面涉及到一个新的概念,叫阿斯克玛,那阿斯克玛是什么呢?我们来举个例子。好,同样我还先把这个注销了哈。先把这段代码注销,然后呢,我给同学们写一个新的文件,叫做char DEMO。
03:04
这个时候举的是关于字符的案例。好的,那现在呢,我们仍然老规矩,先把这一个改成C。呃。这儿是不是改错了char?啊,这个地方啊,这个地方。这一方咱们改成C。那改成C以后呢?前面第一句话我们仍然要引入一个头文件include,对吧,STDL。当然,我们写上一段代码来验一下。比如说同学们看我写个A,我可以给这样的字符。当然我也可以可以给B这样的字符。对不对,我还可以给什么呢?我还可以给这样的C,注意我给个97。
04:00
我给个97,那这时候你看我输出一下F。F来,我给大家输出百分号A啊,A将输出AB等于百分号CB等于百分号CC等于MC。呃,那么同学们看我这样输出哈,我这样输出有同学注意观察一下。我这个A呢。当然是A输出了,所以说第一个输出的A肯定要输出来。这个字符要输出来,B呢也要输出,那么这个时候同学们看到你给的,你给的是一个97,你给的这个C。那么C这个时候会怎么输出呢?我做一个注释,这时当我们以百分号C输出时。就会就会按照阿斯克玛。阿斯柯玛,这个是个编码表。这个码就是编码。
05:00
编码表对应的对应的这个97。对应的97对应的字符输出。字字符输出,那有些同学说是这个阿斯克玛,能够阿斯克玛表是干什么的呢?阿斯克玛表啊,简单的讲就是我们的字符和数字的一个对应表。这样理解清楚了吗?简单的理解阿克曼表是什么含义啊?同学们,我先简单的说一下,什么叫做阿斯克曼表呢?你可以简单的这样理解,可以这样理解,简单这样理解一下,理解就是我们的字符。和。字符和我们的数字,和我们的数字一个对应关系。对应表。这样理解,那我们来看看阿斯克玛表97,它应该对应的是哪一个字符呢?同学们打开我们的这个呃文档,我们这边有一个资料,我跟大家分享一下,在我们的文件夹里面有一个资料,资料里面有一个阿克码对照表,我们打开看一眼。
06:08
当大家看的时候,你你们看到啊,这是我们阿斯柯玛的一个编码表,那我们现在找一下97在哪里,同学们看到97是这个。它对应的这个图形或者叫字符呢,就是A。那也就是说你给到一个差97,那你按照字符输出呢,其实它输出的是A,也就这地方它会输出C。C等于A。这个字符。明白这意思吧,但这个输出输出的就是它的字符了,我们来运行一下,看看是不是这样子的。Get char?同学们,我们运行之同学看效果。同学们看一下效果哈。好,我们运行起来,我们看这个效果呢,给我们想的应该是一样,看A对应的就是A字符,B对应的是这个好,这样子名字取的有点不好啊,我改个名字叫C。
07:05
C2。C3,因为我A放A,就大家听起来好像感觉怪怪的,C1C2C3好,这样子大家就看的比较清晰了,C3对应的就是A,我们再运行一下。我们再运行一下,这样看的比较清晰。运行起来过后呢,我们可以看到运行的效果,我们想的一样诶。哦,我们看看这些地方是不是因为没有编译啊,哦,这面没改C。C2。C3。再运行一下。跑起来。运行,那运行看到的效果就跟我们想的一样了,对吧?C1对应的字字符是AC,二对应的字符是BC,三对应的字符是A,因为你这个97呢,它按照阿斯克玛来表来看,它对应的就是我们的字母A。好,紧接着我们继续往下看下面的一个第四个细节,可以给差一个整数。
08:02
然后输出就会按照阿斯玛输出比较97对不对,还有一点差类型呢,因为它本质是一个整数。因此呢,它也可以当做一个整数进行一个运算,你比如说同学们看,我给大家举一个例子,我给大家举个例子,大家看一下。好,你看我跟大家举这样一个小案例,大家看能否理解啊,我用一个int number等于C2加十。加十,然后呢,我在这个地方print。PTF。然后呢,我输出number等于白跑D,那么同学们看一下我这样写。从我们这个,呃,编辑器来看呢,没有报错,但是我跟大家讲,我已重新生成案例,它会报一个错误,他说失败一个。哪里出人,他大家看到有没有他报过number,没有声明。
09:02
为什么这样子呢?解释一下,就是在我们这一个VVS2010里面呢,它底层用的是C89的编译器,因此呢,他要求变量的定义再说听一遍啊,变量的定义需要写在所有的语句之前再说一下啊。在因为这个V我说一下,我这里做一点说明,为什么报错了。这里注意。所以听老师说第一个呢,就是VSVS2010,它的这个编译器,编译器是用的C89的这个版本。DD注意C89这个版本,因此它要求什么呢?他要求我们的变量的定义,变量的定义定义在哪里呢?在语句之前。之前也就是说说的再明白一点,就是你这句话呢,不不能在这个print,因为这个这个就是一条语句了,就正式正式的执行一条语句了,前面的定义就是你一定要放在所有执行语句之前,那也就是说你这句话应该放在哪里呢?只要放在我们的print f之前就可以了。
10:13
当然你要说往上面放也可以,但往上面放你因为用到C2了,你再往前最多也在这个C第六行的下边,能理解吧,就是你不能在这个输出语句。呃呃,输出语句的后边,所以说要求变量的定义在语句之前,执行语句之前。这点大家明明白哈,我们再来生成一下就没错了。好,可以看到现在代码呢,是一个成功零个失败,好我们来看看了,如果说现在我用这个number c2加上一个十,那这边等于多少呢?大家可以算一下C2,它其实是B。B对应的这个阿斯柯玛其实是98,因此其实这一段代码其实就相当于等价于98加一个十,因为它一看到你加,编译器一看到你加,它就会自动的把这个C2转成一个对应的那一个数字进行运算,那显然这个应该就等于多少呢?等于108。
11:17
能理解,也就是说这边应该输出108就对了,好同学们,我们运行一把呗。我们测一下,看看效果跟我们想的是否一样,运营起来我们可以看到的确是108。没有问题,所以说同学们,我们这个差的第五个地方需要同学们注意的。大家注意一下。好,紧接着呢,字符类型还有一个本质的探讨,我给大家讲一下,其实刚才已经提过了,字符型呢,存储到计算机中,它是怎么存储的?他怎么存做计算机呢?它是先将这个字符对应的阿斯柯玛找出来,比如说这个A。他其实先找到了A对应的97,然后把这个97呢转成一个二进制。
12:00
二进制就对应这个值,然后二进制,二进制拿到以后再存储到我们的这个内存或者是磁盘中。那么读取怎么读的呢?对于一个字符类型,读取的时候,它先读取到的是一个二进制的值,然后呢,把它转成一个十进制的值,然后再去查表,这边它会用到那个那个那个阿斯克玛表。他去查这个97到底对应哪一个字符呢?哦,等于A,然后就读取出来了,显示出来了,好,这就是他的一个存储和读取的过程,那有一点需要跟同学们说清楚,字符和码值的对应关系,事先呢,已经规定好了。就说同学们看我们这张表,他已经规定好什么呢,它就规定好了哦,你这一个I这个字符对应的就是105这个十进制。如果说把这个十进制转成二进制,就是这个值,能理解意思吧。这个阿斯克玛表是事先。
13:03
这些计算机专家就给我们定好了,也也就是说我们计算器计计算机已经认这个编码表了,事先已经定好了,你不能改。你的这个97,它对应的就是A这个字符。你99对应的就是C这个字母规定好的,你这个Dollar,比如说你这个Dollar 36对应的就是Dollar,你你看如果我把这个换成同学们可以看一下。如果我把这个换成30 36。如果36的话呢,你看33 36对应的就是Dollar符,如果我改三三十六,你们看到这边输出的就是一个Dollar了,我们运行一下,看是不是这样子的运行起来。就他这个关系事先已经定好了,你不不是你能改的,你看这是不是Dollar。明白这意思了吧?OK,好,我还把它改回来,好吧,我还把它改回来,好,同学们,那么这一个字符的本质我们就聊到这最后呢,还有一还给大家简单说一下阿斯克玛表到底是什么,我们一直在说,一直没单。
14:05
呃,系统的介绍一下,记住试点就可以了,在计算机内部呢,所有的数据都会使用二进制来表示。这一点请大家注意,那么每一个二进制呢?它有零,一,每个二进制都是按这个bit来计算的。它只有零和一,我们十进制呢,有零到九对不对?那么二进制只有零和一这两个东西,因此八个二进制就能够组合成256种状态。那么一个字节我们称之为BAT,一个BAT有一个BAT是不是有八个呀?一个BAT有八个bit啊,那么一个字节一共有256种不同状态形式,所以说它的编码呢,可以从00000到一这个范围。那么阿斯克曼表示什么时候产生的呢?它是用二进制来表示的,它是上个世纪60年代,也就是说是19195几年,195几年的时候,美国制定了一套字符编码,这现在仍然在用。
15:09
它是英语的字符和二进之间的一个关系,做了一个统一的规定,称为阿斯克曼表,就这样的,它一共规定了127个字符,理解就可以了,你看我给大家看一下。你看从哪里开始规定的呢?比如说我们用这个零。零表示一个,这样表示一个空字符,如果用一就表示标题的开始,再比如说往下看。再比,再比如往下看,你,你比如说我们用这一个叹号是用33表示的。对应的二进制就是这样写的明白,所以说同学们学到这呢,就应该知道阿斯克曼表,其实说的再明白一点,就是英语的字符。和二进制之间的一个对应关系。那么当然一个二,这个二进制呢,这个二进制在这儿。
16:00
这个就是一个二进制,这个二进制呃,转成一个十进制,就是32,我我们人们一般看看十进制嘛,计算机是看的二进制,就计计算机在运行的时候,在存储的时候,都是按照这个二进制来进行运行和存储,我们人呢,一般在看的时候就会就会说,诶你这个叹号是33表示的。是不是这样讲?呃,我们程序才利于沟通嘛,说这两个是一回事啊,就33。转成二进制,就是长这个样子的20,这个二进制转成十进制就是33,这点大家理解一下。好,同学们,最后我们再说一下阿斯克玛的表的一个缺点,就是因为它是很有限的。它比较有限,它最多呢256种状态,而且目前呢,它只用了127个这样的编码字符,但实际上同学们也知道,在我们生活中,这个字符其实很多远远超过了127,后面呢,就有一些这个专家在这个阿斯克表上进行了一个什么呀,进行了一个扩展。
17:07
就生成了像GBK编码。啊,还有像UNO的编码等等,这个呢,因为跟我们现在学的C语言关系不大,所以说我这里就不去讲了,只是你要你要知道在阿斯克玛的基础上呢,扩展出来有很多其他。表,能够表示更多字符的。这种编码,比如说你像汉字,像中国人的汉字,远远超过了这个256个,对不对,所以说呢,他会用更大的,能够表示更大范围的这种编码表来做,比如像GBK码或者unq的码,这点大家知道就可以了。好,同学们,那关于我们这个阿斯码表字符这一块的内容呢,我们就给大家讲解到这里。
我来说两句