00:01
同学们,我们再来看一个共用体的最佳实践案例,也就是现在呢,我们要用共同共用体这个知识来解决我们前面提出的问题。什么问题呢?就是我们要用共用题来保存学生的信息和老师的信息。而且呢,我们还希望能够做到没有数据空间的浪费。那我们来看一下这个题应该怎么做呢?题很简单。就是用我们前面讲的知识点可以很轻松的完成,而且没什么难度,我们来看一下就可以了。往下面拉,现在呢,我们来完成这个案例。好,我们取个名字吧,我们取个名字就叫student。学生,And。Teacher。把它放在一起。Teacher student and teacher,跑起来。那现在呢?我们来看一下这个题是怎么解答的。
01:02
我格式化一下先。非常简单,然后呢,我们还是要引入哈。我们要引入include。HTDL。对。往下走,那我们来看一下这个题我们是怎么玩的?首先呢,这些最最关键的就是这里。这句话大家能看出来老师在做什么吗?这句话。这个地方我们定义了一个结构体。叫person。没问题吧,这个是一个person,这个person里面呢,这个是他的名字,我们不是要记录人的名字吗?这个是他的编号,没有问题,这个是他的性别。这个是他的职业。职业。那我们我们这边已经规定好了性别呢,用F表示女。
02:01
对,用M呢表示男。没问题,然后这边呢,我们用S表示学生。看懂了,用T表示老师teacher的第一个字母。大家看到最关键点是在这里。大家有没有发现在这里呢?我设计了一个共用体,而且我用的是一个匿名共用题,就是我在我在这个地方定义了一个成员变量,这个成员变量的名字叫SC,它是一个共用体,但是这个这个共用体呢,我没有取名。我并没有取名字好,那也就是说这个地方呢,我们这定义了这里,这是可以这样说哈,在这里SC。SC是一个共用体的变量。共用体变量。这个共用体变量就是这个共用体,因为我只用一次,所以说我直接在这里定义的。我直接在这里定义的,看懂了没有?当然有同学说,老师,假如我这样写,可不可以呢?来,我问同学们,假如我这样写,你们觉得可不可以我在上面呢?再定义一个,用共用题我单独的写,比如说这是MY。
03:16
Ain,这是我的一个共共体,然后呢,我在这上边。注意听哈。然后上面呢,我把这两个放过去。也就是说我把共用体定义到上边,定义到上边过后呢,我在这定义的时候,我我就这样写,大家看可不可以。我注销号。就是两种写法,大家看是不是都OK,那就是union mine,我都大写了。啊,My union。这样定义。在这写好写好过来个SC这样子。可不可以,其实是一样的,对不对,这有一个union嘛,我的内心是一个union,呃,是一个这样的共用体C,但是为什么我我这样写呢?因为我觉得我这一个共用体我就在这里用一次,我就不用了,所以说我直接用匿名共用体的方式来定一个共用体的变量就可以了,所以说我们其实两种方式都可以,我把这个撤掉好吧。
04:16
这个我就不要了。明白这个意思哈,我把这个注销。然后继续往下面看,这个就是这是我们这个结构体里面,就是这个结构体里面包含了一个共用体,那么这个共用体呢,大家可以看到它其实它的空间只是一个20了,就是看谁的更大,那么呃,这个共用体又既可以呃表示。一个分数也可以表示是一个成绩,那就要取决于你的职业是什么。共用这个空间。接着继续往下看,那下面呢,这定义了一个变量I,这里大家能看出来我在做什么,这个地方。对,同学们看在这,我把这个定大一点吧,干脆。我定两个好吧,因为一个没法看定两个,我这里输入人员的信息,这里面呢,我定义了。
05:07
我定义了一个什么呀,是就是结构体。结构体数组。这个结构体数组是person的结构体数组,他一共有几个人呢?有两个人,现在我是两个人,然后我就循环,循环的时候呢,我可以一次性的输入他的信息,比如说SDCC,看这个前面四个,前面四个成员分别是这个。人的这个人的名字,还有他的编号,还有他的性别,还有他的职业,大家可以看到,对于名字而言呢,我直接这样进行一个输入,但是对于它的编号为而言,我要取出它的地址符,这个还理解吧,就是对于数字,还有char呢,其实在输入的时候要在前面放一个地址符,我们在前面已经讲过了,就不再多说好吧。
06:03
那下面呢,我做了一个判断,如果你这个信息是一个学生。是个学生,那么我们再让他输入一个什么呀,输入一个成绩,如果是一个老师,我们让他输入他的一个授课的,就是嗯,他能够教授的这个课程。好这样子,我们呢,这样子做哈,为了能够让别人在输入的时候知道是输入什么,我在这给一个提示信息。这样好看一点嘛。对,请输入该学生,因为到这已经是学生了,可以确定该学生的什么呢成绩。对不对,这样就OK,那么下边呢,这个因为是老师,所以说我再提示一句话,请输入该老师,该老师。授课的课程。他的课程,他能够教授怎样的课程,这样就更清晰,最后大家看我这句话,这句话是干什么呢,Flash。
07:04
就是刷新一下,我们这个这个输入就是刷新一下。刷新。刷新一下输入,这样呢可以保证我们数据都被写入到我们这些这些结构体里面去了。这是我们的main函数,那这个刷新完了过后呢,这个for循环我们就结束了,我们输两个,输完了过后呢,我在这里提示一句话,我要输出信息了。我因为我想按一个表格输出,所以说大家可以看到我这里呢,用的是制表符,看清楚没有。斜杠T,斜杠T还知道是什么吧,是两个字表符,那么这边是打出一个表头,下面就循环的干什么呀?诶输出了我们人员的信息,他是几个就是几个,然后呢,大家可以看到在这里,在这里我是先做一个判断,如果当前这个人。同学们看,如果当前这个人是学生,我们就按这种方式去输出,如果当前是老师,我们就按这个方式去输出,也就是说这个是学生和老师。
08:08
最后面取的内容是不一样的。是学生呢取的是scar,老师呢取的取,取出来是course。取的时候大家一看也很简单的哈,就是这个,先访问到它,这是第几个结构体,是这个结构体数组的第几个变量,然后再点他的名字,点他的number,点它的性别,以此类推。最后呢,我们get char。看一下就可以了,代码其实特别简单,就是一个输入和一个显示的过程,那么同学们,我们先看一下代码有没有什么问题。先把这个注销。然后呢,我们先生成一下方案。生成一下解决方案,看看代码有没有什么毛病,如果没有什么问题呢,我们就可以开始来使用了。开始来使用。代码没有任何问题,我们输出输入信息的时候呢,这个格式要确定好好不好,第一个是名字,第二个是它的编号,第三个是他的性别,然后是职业。
09:08
来,走一个。运行起来。说信息,我们先说第一个人好不好,汤姆。汤姆打一个空格,为什么是空格呢?因为我这输出是这段是空格,那编号吧,咱们是十。然后呢,他他的性别假设是F是是一个女女孩,然后呢,再来输,他的一个性质是假设是个学生S回车。这时呢,你看它提示说输入学生的成绩,因为我输的是S,所以说他判断出来应该是学生的成绩,我就随便输一个80。好不好回车,紧接着呢,又输一个信息,比如说我们叫做。这个人名字叫做什么呢?叫做。这个人进,然后乘积20。20,哦,不是20,编号为20,然后他是一个男的,他是一个老师T回车。
10:04
这个时候你看它提示的信息是,请输入该老师的课程。比如说现在这个老师教的是什么呢?数学math回车就可以提示了。我们可以看到这个信息呢,就打印出来了。第一个是汤姆,它的编号是十,它是F是个。呃,是一个女的,然后呢是学生,她的成绩是80 80,第二个是这个人,她的编号为20,男的是一个老师,然后是数学,只是如果同学们有兴趣的话,可以把这个性别和这个职业呢用中文来处理,如果是用中文的话呢,同学们一定要注意,你在这个地方就不能是一个char了,因为中文我们至少一个中文存不到一个char里面去,所以说你最好用一个数组或者一个指针。用一个髂心指针也可以,好各位同学,那这样子呢,我们就使用结构体啊,使用共共体,把这个最佳实践给完成了,大家能看懂吗?其实一点都一点都不难,对不对?好,我把这一道题给大家板述一下。
11:08
放到这里来。这是一个最佳实践,加深了我们对共用体的一个理解,把这个体拉过来。这是我们这个表格对不对,我只输,我只输了两个人号,同学们有兴趣可以多加几个人测试一下。那代码拿过来。代码演示。我把代码呢给各位朋友板书到这里。代码放这就可以了,很简单。放这哈。OK。对,放在这里。可以了,那这样子我们不是刚才讲过,除了用这种方式来定义,也可以用这种方式,我们也试一下,看看能否用起来好吧,比如说我在上面呢,定义定义了一个共用题,我这样写用也是可以的。
12:00
在这儿。然后呢,SC这这这样用,其实跟上面这个用法是完全一样的,我们来试一下,毕竟我们没有使用可能会有错,对不对,我们还是给大家证明一下,看看这种用法是不是正确的。先进行一个生解决方案的生成,好代码没有任何问题,我们运行一下。还是按刚才那个规则来找汤姆,对,然后编号为10F,是个学生没有问题吧,学生成绩呢,比如是89。再来一个这个人,然后呢,40编号M是个老师,输入老师的成绩,呃,输入老师的授课课程,数学回收也是OK的,没有任何问题哈,两种方式都可以,那我还是用还是用我们第一种方式给他撤回去好吧。同学们知道两种方式都可以就行了。各位同学,关于这一个最佳实践,老师就给大家讲解到这里,大家呢,把这个代码走一下,最好是。
13:01
那各位同学关于我们共用体的知识呢,就给大家讲解了这些,大家体会和消化一下。
我来说两句