粉丝4.3万获赞19.8万

大家好,咱们这节视频呢,给大家介绍一下我们这个第三组啊,这个读写函数 fprontf 和这个 fccomf 啊, fccomf 的话呢,新版本的是 fccomf 杠 s 啊,哎,是这样的,那么我们看一下, 呃,这个 fprnafprint f 呢,是像我们这个文件中去写入数据,它这个写入呢跟普润的 f 呢是一样的哈,那普润的 f 呢?它是什么呀?单纯的写到我们这个屏幕上, 对吧?哎,我们可以简单理解为写到屏幕上,而 fpro 呢是写到文件里头啊,把我们这个数据呢隔着画成这个字母串之后啊,写到这个文件里头, 哎,文件的第一个参数呢就是我们文件指针,第二个参数呢就是我们这格式化的这个,呃,字母串第三个参数,第四个参数呢就是我们这个具体的数据,那么写入的时候呢?哎,就是把这个 a 冒号十二,还有这个 b 冒号四十五点六啊,还有这个还有 s 冒号,这个还有什么? 哎,他呢就写入到我们的这个,呃,文件中了啊,咱们来演示一下,咱先演示这个写入啊, 第一个参数是我们的文件指针,第二个参数就是我们的格式化的走串啊, 百分之 s 啊,你也可以加换行,也可以不加换行啊,都行啊,随便啊啊,今天是我们这个数据十二二十三十四点五,然后呢还有这个 都行啊,然后的话呢,我们 这个里边也可以进行这个小小数位的控制啊,我们控制两位,那就是三十四点五零啊,这个呢就像文件中去写入啊,写入个字母串,咱们给大家演示一下。 好,写入完了,写入完了呢,我们一定要去文件中看啊,好,我们可以看到写入到文件里边呢,哎,他就是这样的一个效果了,对吧?啊,这是, 哎, a 十二十二的替换到这,然后呢逗号,嗯,三十四点五零还漏,哎,这样的话呢,就是格式化写入啊,就是按照这个格式呢去写入到文件中了啊,然后的话呢,紧接着就是我们的读了,对吧?哎,那读, 我们读的话,读的话呢叫做 fcakf 这个函数啊,那 fcakf 的话呢,也是老版本函数,新版本的函数呢,就是 fccf 杠 s 啊,主要的区别呢,也是跟我们的那个 stakef 和 stakefangs 是一样的哈,就是在往外读的这个字符串的时候呢,我们要加上一个字母串的参数啊,就是他这个字母串的字结数, 字母数组四结束啊,是这样的,因为我们要往外读嘛,哈,从里边读出来呢,我们要存到这个空间里边,存到变量中啊,那普通的变量呢,也是一定要加上我们的这个或者数值类型变量啊,基本数据类型变量的,一定要加上我们的这个取地址符号啊,然后呢这个数组的话呢,直接放手地址就可以了,哎,字母数组手地址就可以了啊, 这是这个,那么对于我们这个 fcaf 的话呢,哎,就是说对于我们这个自负自负数组这个参数呢,就,哎,没有那个二十这个这个这个自结数的啊,包括的话呢,我们百分之 c 的时候呢,也是啊,也要加上一个自结数一啊,那么其他的数值类型的呢,都是一样的啊,这就不多说 说了,咱们直接测试死看不看 s 把,这个呢就先注视掉啊。 呃,我们这一串呢,就给他直接拷背过来啊,直接考过来,那么我们这个读的时候也要注意哈,我们这个函数呢,是成对存在的,那么我们这个写入到文件中呢,哎,是这样的一个 一个规矩啊,或者这样的一个规则,那么我们往外读的时候呢,哎,也一定是按照原模原样的这个里边的东西直接拷贝过来,哎,如果说有一点不一样,那么读出来的数据呢,就乱了 啊,就每一个字符都必须是一样的,明白吧?啊?必须是一样的,当然的话呢,对于我的这个,呃,这个这 这个,这叫福。典型的时候呢,在我们死看府这一块呢,他没有点二这种形式,所以说呢,我们这个东西呢是可以忽略的,哎,点二的这个控制小数位呢,就忽略了,就就直接拿掉就可以了,哎,没有这种形式,所以说死看府直接用百分之 if 呢,他就能够读出一个,呃,正确的这样的一个小数的啊, 这是这样的情况,然后紧接着是我们的参数,那参数的话呢,一次就要定义三个参数了,第一个参数是 in 的类型的,对吧?图纸画个零啊,然后我们这个第一个参数就取低至 a, 哎,然后第二参数是 double 类型的, 哎,出手划个零去地址打爆啊。第三个是一个自助串啊, 我们都给他进行一个简单的处置化啊, 然后多个参数是我们这个奏串的长度啊,二十,好,这呢就是往外读,读完之后呢,咱们加个断点看一下啊,我就不输出了啊,我们直接呢就断点看一下,这个结果好看一下。 a 的值呢?装的是零 啊,这为什么装的是零?因为我们这个呃文件打开的方式呢?不对啊,我们一定用二去读,对吧?然后刚才用 w 去读,读出来呀,我读不出来啊,不让你读,但是呢,我们里边的数据呢变了啊,我们什么都读不出来了。为什么呀? 哎,因为呢,我刚才呢运行了一个 w, 对吧?哎,我们最开始呢运行 w 是写入了,刚才呢,我又不小心又运 清理一个 w, 但是我们这个 w 呢什么都没写,哎,导致我们原来的数据呢全被清空了。所以说呢,我们需要重新调用这个,呃 f pro naf 呢进行一个写入啊, 哎,我们重新调用进行一个写入,对吧?然后来给您继续。好,这样的话呢,写入完了,写入完了的话呢,我们把这注释掉,我们去单独的去读哈,因为我现在测试的没测试加号那种形式呢哈,我们的仅是单独和单写啊,这会去读啊,就能读出来了。 我们看一下,哎,十二啊,然后三十四点五啊,然后呢,我们来字母串啊,嗨露,哎,都读出来了,对吧?但是这个字不串,你看读的时候出现一个什么问题呢?哎,他仅读出来一个嗨露,对吧?然后呢,我们的 这个呃文件里头呢,他不是嗨露,他是什么呢?他是嗨露, c 三中间有个空格,对吧?啊?他为什么只读出了一个嗨露呢?这也是啊,直接模仿了我们死看服的那个功能 死看复跟我们这个盖茨函数呢,他俩区别是什么?就是死看复函数呢?不读空格,他把空格呢当成分格符,所以说呢,他读完还没有看到空格了,后面这些呢,就不读了,哎,这是死看复的特性。 fs 看复呢,也是如此 啊,然后呢,对于盖茨这个函数呢,哎,他就能够全读出来,哎,他那空格也读,对吧?那么我 fgas 呢,也是同样的道理,想要把这个文件中的空格呢以下都读出来呢,哎,就要用 fgas 这个函数了啊,你 fcaf 呢,是不行的, 哎,这是他的一个基本的特性,简单吧啊,也很简单啊,这是这样式的啊,那么还是那句话,他俩呢,一定要 格式一样的啊,比如说格式不一样。我这块呢啊,来一个易啊,啊,来了个易啊,那这个时候往外去读,能读出来吗?那咱们看一眼啊, 哎,我们看一下, a 呢,正常读出来了,对吧?然后呢, b 的话呢,看读失败了,对吧?读失败了,为什么呢?因为我们读到这一个字符的时候呢,文件里边写的是 b, 而你这块呢,写了个 e, b 跟 e 不一样了,那么这个读取呢,立刻中止,从这就跳毁了,所以说只有 a 是读取正确的,后面这一些呢,根本都不读了,对吧?后边这根本就不读,直接跳过了, 哎,所以说我们这个死 kf 杠 s 呢, f s k f 杠 s 呢,也是跟我们死 k f 是一样的,它是严格的按照啊,这个输入的这个,这个这个规则进行的,对吧?哎,一个字符都不能差,所以说这函数呢,是成对存在的啊,那么通过这样的一个分析呢, 你们也知道哈,或者说可以简单的,呃,简单的,明白吧?哎,就是这个函数呢,是成对使用的哈,你不是,你比如说我用这个 fpoppo 的 c 去写入到文件中了,最后呢,我用这个 fcomf 呢,往外读,怎么着啊?哎,他就容易出问题了, 对吧?一呢是你这个规则上呢,你这个你得要非常的清楚,那么你才能够读出来,如果稍微有一点不清楚,那么这个数据呢,读取就失败了, 对吧?所以说啊,我们这个函数呢,是成对使用的,他的参数呢,写的也是对应一样的,这样的话呢,我们会操作起来没有问题,对吧?我那样读,我就这样去写,那样读,我就这样去写啊,不是我这样写,我就那样读,这样写,我就那样读, 这样的话呢,他就一呢是方便,二呢是不出错啊。好,这就是第二组的函数。



c 语言小白基础入门系列最后一期收官之战讲文件操作。首先我们先来认识几个核心名词,一、文件指真 file。 c 语言操作文件的桥梁, 指向文件在内存中的控制块,记录文件当前读写位置、状态等信息。文本文件二、禁止文件,文本文件存字母,如 txt, 按字母编码存储。 二、禁制文件存原始数据,如 jpg exe, 读写更快,无格式转换。二、打开模式二,只读文件必须存在,否则报错。 google u 只写文件,不存在则创建,存在则清空。 a、 追加文件,不存在则创建写入,从末尾开始。二 b double 于 web, 于 web。 二、禁止模式读写,追加二加读写文件必须存在。三、 if and file 文件结束标志值为负。一,用于判断是否读取到文件。末尾 缓冲区内存临时存储区域减少,此盘还有次数 first, 可强制刷新缓冲区。接下来直接看代码。首先看第一步,打开文件,这里我指定了绝对路径,用的是 double u 止写模式, 意思是如果这个文件不存在就自动创建,如果存在就清空原有内容。重点来了, fopp 之后必须判空,如果返回 no, 说明文件打开失败。比如路径错了,权限不够,用 p r 打印错误原因,再用 a 字退出,避免后续操作崩掉。第二步,写入内容, 用色调往文件里写字体串,我这里写了抖音木学长和私语言中章文件操作两行,注意字体串里的换行符 n 能让文件里的内容分行显示更清晰。第三步,关闭文件, 这不是重中之重,绝对不能露。 froos 会刷新缓冲区,把内存里的内容真正写入此盘, 还会释放文件资源,要是忘了关,大概率会出现文件写了但内容为空的坑。如果不想清空原有内容,只想在文件末尾加新内容,就要把打开模式从 duplo 换成 a 追加模式。我基于刚才的路径写了这段代码, a 模式下 文件不存在会创建,存在则写入位置自动跳到末尾,不会覆盖原有内容。接下来读文件,把打开模式换成二指读模式,还是先判控,确保文件能正常打开, 然后定义一个一千零二十四字节的缓冲区。 buff 用来存取的内容,用 y o 循环加 f g t 按行读取, f g t 会从文件里读一行内容,存到 buff 里,直到读到文件末尾返回 no 就 停止循环, 循环里用 print 把读取的内容打印出来,就能看到咱们刚才写入的文字了。最后别忘了再关一次文件。再讲二帧制文件,这在处理音频、图片等二帧制数据时超实用。 二帧制文件和 txt 文件的区别其实就两点,咱们刚才写 txt 文件用的是 r double u a 模式, f t c g 字读写核心是按字符存数据, 而二进置文件就该两处,一模式后面加个 b, 如二 b double u double u up 二读写用斐斐按字节来,其他的打开文件要判控用完必须关文件,和 txt 的 规则完全一样。 到此,咱们从 hyrule 起步的私语言基础之旅就圆满收官了。相信你已经从编程萌新成长为能打败指真内存这些小怪兽的入门选手,成为更好的自己没有捷径,一直在路上,比原地踏步更接近幸福。

c 元的计算符是很丰富的,都有一点小花样,今天我们先撸几个入门款。不值计算符是最基础的一个功能,就是把右边的值存入左边的变量。变量在内存里占了一块空间,但内存本身是没有计算能力的, 是 cpu 把数据写入到变量的内存空间里,所以赋值就是 cpu 向内存写数据,是写操作。这两句代码略有一点区别,第一句是常量赋值, cpu 直接将常量写入到变量的内存里,一步到位了。第二句是变量赋值, cpu 会先读取右边变量的值,再写入到目标变量, 整个过程就是读内存,减内存。对负值我们可以再拓展一下,负值号的右边可以是任何的表达式, 只要这个表达式能算出一个值,并且这个值的类型和目标变量是匹配的,给 cpu 做写入操作就可以。比如这种代码以后学函数的时候会经常能看见,继续看加减和乘。 代码很直观,用常量做计算也可以用变量做计算,可以看得出来,写法和数学差不多,但只有计算,没有用到结果,等价于无效代码。现在的编辑器通常都会优化掉这种代码, 所以计算应该有明确的使用目的,比如用做负值比较等等,我们就用负值来配合讲解一下。如果符号两边都是常量,编辑器会把结果算出来,在编辑的时候做替换。术语呢,叫做常量折叠, 它的目的就是不让 cpu 去算,节省 cpu 的 计算资源。如果变量参与计算,那 cpu 就 要干活了, 他会把变量的值从内存里面拿出来,先做计算,把结果得到以后再放回到目标变量里, 那整个过程就是读内存,计算写内存,并且一定是计算完成以后才会将结果写回去。 这个过程了解以后,对于 i 等于 i 加一这种代码,看起来我们就不会懵逼了,他会把 i 的 值从内存里面拿出来,完成加一的操作以后, 再放回到 i 所在的内存里。加减乘,它还有复合的写法,叫做加等于,减等于乘等于,它们是运算加负值的合并写法。 而右侧的代码其实是等价的,看上去逼格高一点,并且对于复杂的表达式,这种写法的执行效率也会高一些。 这几种运算符都属于入门款,然后他们不难。最后我们再拓展一下,对于交换两个变量的值,代码通常是这样写,为什么要第三个变量参与进来呢?就是因为内存没有计算能力,必须由 cpu 通过读和写的操作来完成, cpu 需要第三个变量做临时的一个存储才能搞定这个交换。当然还有其他的一些方式学到后面呢,就自然而然的解锁了。这一集视频就到此结束了, 如果有不明白的地方呢,咱们在评论区聊一聊下一集视频,继续探讨其他的应用。 nice。

同学们好,今天我们来讲第二章参数式 c 语言的基本数据类型。来看章节目录,第一节呢讲数据类型与表达式,第二节呢讲常量,第三节讲变量, 最后呢讲运算符。来看第一节数据类型与表达式。 先来看看数据类型的总体介绍。 c 语言的数据类型呢,只有这么多啊,它有三大类,基本类型、构造类型和指真类型。其中呢,基本类型呢,又包括字母型就叉型 整型, int 型实型就是小数实型呢,包括单精度的实型 float 和双精度实型 double, 还有一个无执行就是 y 的 啊,就没有类型这么一个类型。构造类型呢,分为每举数组结构体就是 struct, 还有公用体拥。您 来看类型修饰符啊,这刚才看的那些类型呢,就是左边这一列, 就是嵌式肺炎所有的类型,然后右边呢是他占的这个存储的位数,当然这个要根据你不同的处理器的架构,他的存储位数会有变化啊,这里看就是现在二六四,他有他的存储的位数,跟他可能不一样啊, 比如叉型,一般我们认为是八位无符号的符号型,八位符号的字母型八位,无符号整形三十二位。符号类的整形十六位, 短整形十六位,长整形三十二位。但是现在应该是六十四位啊,因为现在 r 六十四嘛,对吧? 然后无符号长整型三十二位, float 浮点型三十二位, double, 双精度型六十四位。这是目前的一个类型定义啊,当然这个是经典的 c 语言, 下面我们来看访问修饰符啊,那 c 语言呢,它用于控制访问和修改变量方式的修饰符分别是常量和易变量,常量呢就是 const, 易变量呢就是 volatile, volatile 这两个什么含义呢? const 一 般修饰的是一个常量,就是它在整个程序的运行过程中是保持不变的。 一般用 cons 来修饰啊, volatile 呢,就说它用提示这个编辑器不要对它后边的函数或者变量进行进行优化, 因为用 volatile 修饰的变量,它有可能是由于硬件的原因或者程序之外的原因被改变,比如说寄存器,比如说 f 缓冲区,大家举个例子啊, 大家看这个是这个飞腾派看的驱动驱动代码的头文件,这里边有一些,比如 看控制器的配置,像这里边第二个参数,大家看它就是 cos 类型的,就说一般我们这个看控制器的配置信息是整个在整个系统的运行过程中都是保持不变的,你一旦出使化给了一个配置, 它自始至终都会这个配置,它不会改变,所以这个呢,我给定义成一个 cos 的 类型啊。 好,下面来看构造数据类型, 构造呢,第一种是数组,它呢比较简单,它是一组连续的,而且按顺序存放的这么一个个相同类型的数据啊, 那么结构体呢,它就是可能这个成员都是不同类型的,但是它们也是按照顺序存放的这么一个结构啊。 那共用体呢,是不同类型的数据,它存放在同一个起始地址的内存单元的区域里面, 为了节省这个存储空间,这是共用题啊。最后是每举,每举呢说它是个集合,它把这个变量可能的几种取值全都列出来,用符号来表示,每个符号代表一个整数值 啊,但是它只有这几种整几个整数值,所以它是个子集啊。 好,最后我们来看指真类型, 指真呢,它可以表示复杂的数据结构,它可以指向这个结构的每一个成员啊,而且能够动态分配内存,就是你用 mylock 来分配内存的时候,它返回的就是指指真类型,而它可以很方便的使用字母串, 它可以指向一个一系列的字母啊,而可以使用数组,这也没没问题。 所以说一般如果你这个函数调用的时候,除了返回值以外,你还可以通过指真的方式来传递这个数据啊。 好,同学们,那到此为止呢?这个数据类型表达式就讲完了,这里面呢,我们讲的概念比较杂啊, 这边主要讲了这个,大家要注意,一开始那个表就整个 c 语言支持哪些数据类型,基本上就那些 啊。然后大家注意不同的这个修饰符,大家要注意就这个这一页的这个 const 向量,它们分别的功能作用是什么,大家要掌握啊。 然后构造体,几种构造类型,它们的含义是什么?数组,结构体,共用体,每举它们都有什么含义,大家要知道啊。 好,下一课我们来讲常量,这是上个事,谢谢大家。

ok, 后带好,后面就是 c 一 元剩下的部分。从函数开始。函数它的基础概念就是可以减少重复代码的使用。可以看个例子,就直接按照英文去看, i d d 代表加法,函数的定义就是 in, 调是整数, add 是 函数,名字小方括号里面就是 int a int b return 是 英文的单词返回的意思。 turn 这个词根叫做旋转嘛,就是 re, 就是 往回旋转,就是可以返回的意思,所以 a 加 b 的 话它就是, 所以看这个含义就是 a 加 b 就是 一个加法,所以它这个就是一个加法哈。函数如果你写在使用的后面的话,你必须要加起,你必须要在前面加起名,不然的话它就。嗯,找不到。这个也好理解,无返回值就是 void 没返回值,这个好理解。然后就是递归函数就是递归,递归就是先递再归,就是它的意思。就是 啊,比如说这个阶层,阶层就是你调用,你调用自己的时候,你又重摁乘以,你又又调用自己,对吧?就这个意思。然后 他的归是什么呢?就是一摁小于等于一的时候,他就会往上回归,所以说呢,他就会返回一,然后一层一层的往上回归,然后直到算出这个 刚开始传去的参数,比如说你要计算五的阶层,对吧?就是五乘四,乘三,乘二,乘一。嗯,因为他等于一的时候他返回了,所以说他就可以往回回归,这个很重要啊,先这样大概了解就行。然后序组就是什么呢?序组就是 印他类型啊,然后序组名方括号,他的语法啊,他有五的话就可以填五个函数,五个数字 print, 哎呀,否否打印,对吧? form 就是 打印,就平均分,就是相加夹起来就可以,这个好理解。字母串数组就是 hello, hello 是 一个字母串,对吧? 叉 name 放括号的话,它就相当于是一个字母串的数组,因为它这个制服组组,因为这个数组它是纯字母的,对吧?纯一个一个字母的,嗯,就是这样子, 然后概念就这样子。矩阵就是两行两列,三行三列,然后呢就是外层覆循环打印行数,内层循环打印里面的每一个元素,这个比较好理解哦, ok 啊,先这样子,掌握到二位数字就可以了。指针,指针指的概念就是啊,这个指针怎么去理解呢?这指针还不太好讲。这个指针它就是 in time 等于四十二,那这个型号 p t r 去 r 的 符号就是去向的是 number 的 这个地址值。 in time 它是整数,整数它是占四个字节的,它取的是什么呢?它是取 啊,就是取 number 的 最最小的那个地址,取出来之后它就可以,它信号信号 p t r 等于百,就相当于是 om 等于百。啊,这个不太好理解,我准备翻到上面给大家看一下。这个,这个,这个啊,数据结构与算法,这里, 它,这里。我看,不是这个啊,是圆面相对象。我看一下,我看我看哪里?我看这里。是有的 参数表吧。引介参数表就是,比如, 比如说你一个 dog, 对 吧?你这个方括号一,这个零差一百百,零差一万,就是那个底针指针,你对它进行方靠,就是取里面的值。嗯,这个怎么去理解 啊?就这里,嗯,比如说 e x, 它就是一个计算器,那某式按照英文理解就行。就是啊,这个零差三零零零这个 dog 的 地址 哈,复复制给 e 个 x 啊, e x 方括号就是取它的内容,就是零差一零零零,这个是。啧,这个暂时啊,主要试一下它。这个我看可能还听不懂。主要是这里啊, c 元这个指正的概念。就是 啊,它是取这个变量的地址啊,对吧?你看比如说 ingata, 它是四个字节,它是取它最小的一个地址,比如说它的编号是从零叉一千开始的,到零叉幺零零幺零零二幺零三,它就取的是零叉幺零零零,然后它信号 p t r, 因为它这个 ingata 是 四个字节的宽度,所以它会把一百从一百直接存入,存入这个四个字节里面。 对,就是这样子,了解一下就懂,可以吧,就是他是取这个变量的地址就行,有这个地址就可以变一期,他就会生成对应的会变代码,按照指定格式的宽度给他填充内容,比如说印他,他就是这个字节,就填四个字节内容。 好,如果它是叉的话,一个字节它就是一个字节的内容,就直接舔一个字节的,那这后面应该会有再印个代码解释。先了解结构体,就是把所有的内容给它揉在一起。这个好理解,访问的时候就直接用点就行。我看,嗯,结构体速度不重要 啊。对,如果你看这里就结构体的体的话,就是 ptr, 就是 取这个 steven 的, 这个叫做什么呢?取结构体的首地址,对吧?你访问 name 的 时候其实就是偏移加零访问的 name, 因为 name 的 地址就是就地址偏移量 h 就是 加上这个什么呢? 就是它的偏移地址是什么呢?就是 h 减去 ptr, 对 吧?就是 h 的 地址减去首地址,就是它的偏移啊。嗯, 然后它的偏移加上括就是往下继续移,移动加二十四个字节,它已经算出来,加零,加二十,加二十四,加二十八, 然后你用指针在访问的时候,它就可以通过这个偏移量来拿到你的这个变量地址值,然后根据对应的宽度给它填充进去。比如说恰儿,它是一个字节就填充进去,我试验只是四个字节图把,而是填充到四个字节的内存里面的宽度直接填进去, 这个后面有代码墙,后面有上机,先这样子,然后文件操作就直接按英文去理解。怎么去理解呢? file 就是 文件的意思, f open 就是 file, open 打开文件,然后后面是 w, 就是 word 模式。写模式写吗?写出注 f print f 撇吧,直接就是写进去就可以了。 if close 关闭文件,嗯,然后只读去文件,就是 read 函数,对吧?二读模式就可以, 然后文本追加就是 a l append, 这个好理解,按英文理解就行。然后动态内存,这个是 my lock, my lock 就是 memory a lock, my lock 这个 lock 就是 定位的词根,所以就是去定位,就是去就去空闲内存返回,然后就可以使用啊,它对应的就是 free, free 就是 一个释放的英文单词,这个好理解。 call lock 就是 call lock, 它还会给它出示化为零,这个还挺常用的,比如说你结构很大的时候,直接出示化为零内容就不用写 一个一个的去给他出式化为零了。嗯,瑞拉克就是重新分配,你看他的英文嘛,这个按英文理解就行。然后动态二数,动态二维数组不用嘛?这个啊,用的管,然后就是回调二数回调少,他用的管谁调还好缓过,就是看调回调数,回调它就是它的公式,就是 比如韩红桃,韩汉浩小框里面一个时针,然后一个返回值,就是函数的时针啊。 b t n call back, 就是 一个时针变量名,然后 unk 就是 一个类型嘛,类型,然后后面就是类型的名字,就相当于叉 r 一 样 unk, 然后给它出式化的时候就给它这个变量名,给它负责 unclock, 比如说 c pattern 就是 n c 浮 clock, 在 调用的时候就是 touch b t n on clock 就 可以调用个回调哈,因为你是先注册再使用,对吧?比如先注册进去,然后后面在在特定的时间就是去调用这个函数, 就触发这个回调函数,因为你你相当于先是先注册,后面再出发,就是实现了一个一不就是你不用的时候就没关系,你用的时候它自动就会来调用你,对吧?就是回到你, 对吧?这个地方是我们手动手动触发的,但是如果是 g y 的 话,它会被动的,这是然后自动的来调用我们的,比如说保存取消和后自个提交,这个还挺重要的。然后我看还有什么样的,比如说定时器回调,这里的话也是一样的,然后先注册,后面再使用,再特定的 特定的时机去使用,比如说运行时期,这里是我们手动调度,但是一般来说像 st 二,它有硬顶性,它会自动来调用你这函数,或者是用现成来调用,你 一定就是用现成类点测你这个定时器,然后如果到十日的话,就就调用你定时器对应的回调函数,这样子就可以实现定时器。