ZAMYLA陈:嗨,大家好。 欢迎来到部分。 今天只是要所有的测验 检查您的测验周三。 我希望大家记住 他们在周三进行测验。 如果你没有,那么, 现在你已经提醒。 因此,周三一定要显示出来 类或其他的住宿, 有必要的。 你们都将是真棒。 这将是巨大的。 而且我会尽我所能 帮助今天准备为您的测验 现在。 而且如果你不知道, 有一个广泛的课程审查会议 今天在7时 西北实验室B103室。 你可以再次看到我的安可为 我将带领该审查会议的一部分 也。 所以,如果你不能得到足够的我 现在,你可以再来今晚。 好吧,所以首先第一件事情。 之前,我们只是一些测验技巧 实际上下潜到审查。 因此,对于任何考试,实践 一定会帮助你的。 有从过去的考试 六,七年在那里, 所以这是一个大量的实践 材料你们有。 而事实上,今天真的只是 将要会在任何议题 那你们有还有疑问 通过实践工作的问题 从测验为零。 所以,我会扔了竞猜零 从去年开始就在这里, 我们可以通过任何问题工作 那你们想。 所以练习。 你会开始,今天做的事情。 代码在纸面上。 所以是的,如果每个人都 居然可以全身而退 纸,那将是巨大的, 因为你不 要在您的计算机上 考试,写出来的代码手工 往往是困难得多 比你想象的。 你已经习惯了只 看到它,并键入它, 你有你的编译器 帮你当你有错误, 但你没有得到,关于考试。 因此,它实际上很重要 能写出来的代码, 并做了肌肉记忆 它的手会真正帮助你。 所以,我们正在一点点接近。 今天是星期一。 考试是在星期三。 但是,如果你有时间, 肯定需要一 从过去一年的考试中 下一年的时间限制之前 的一个半小时。 刚敲了一小时 和时间的一半, 和自己坐了下来, 通过问题只是工作 因为如果你是真正 服用它,因为一个 那我们听到的最大的事情 该测验是,它们是非常长的。 这是一个很多材​​料。 有很多问题, 大多数人可能无法完成。 我知道,我完全没完成 我的小测验,当我把这个类。 关于这一点,作为少 舒适的节, 明白这当然是指 以满足各个层次的人。 整个原因,我们必须拆分 不太舒服,地方之间的, 和更舒适是 种使之更加公平。 如果你是不舒服,这是 没有必要本身得到的一切。 就像如果你能得到 一切,你可能会 是在更舒适的部分。 所以,很显然不打自己了 太硬,如果你不能完成考试。 请相信我,我没有做到这一点。 我仍然是一个集中器。 我还在帮助教课程。 你会没事的。 行。 最后,得到一些睡眠。 显然,任何考试 我们经常说这个。 临时抱佛脚前一天晚上 而没有得到任何睡眠 确实不是 - 也许,如果是 为你工作,去了。 但对于绝大多数 人,得到一些睡眠, 让你的大脑休息和恢复 未来在考试前, 将真正帮助你。 也将有近 一定是糖果的考试, 所以你必须期待。 你们要做大。 它会好起来的。 而现在,在接下来的一个半小时我 会尝试预习,你是最好的,我可以。 所以,我从基本的幻灯片 所有的部分到现在。 我不会去通过 所有这些,因为这是不 在一个半小时可行,以及 通过实际问题的工作。 所以不是我的主题列表。 这些都是所有的东西 我们可以考考你。 如果有什么事 真正跳出 想要走了过来,说你 要我走了过来概念, 我可以尝试给 您概述那里。 或者,如果你想跳就在以 做练习题一起, 我们可以做到这一点。 这是给你们。 有没有那么多的你。 所以这是什么,你们喜欢做的事。 我想成为最 有用的走向你们。 所以,我就让你只是看看。 听众:有一件事是 我们不断图表 说对栈和堆。 仅落后于整体思路 这一点,是什么意思。 ZAMYLA陈:是的,确定。 这是所有的方式在 年底,所以让我翻阅。 听众:我们不必 现在就这样做,但不管。 ZAMYLA陈:有没有 anything--这一个。 这是一种模糊的人吗? 听众:是的,我是第二个。 并能我们也做缓冲区溢出? ZAMYLA陈:缓冲区溢出? 行。 因此,缓冲区溢出是相当 易只是说说。 它基本上是缓冲你想想 一些数组的内存,你有,对不对? 我们通常讲 缓冲区溢出时 你不检查多少钱 用户投入,对不对? 这种想法是 与缓冲区溢出 他们把在远 太多的数据的空间 你已经分配给他们,对不对? 所以,如果你说,给 我的一些消息,我们 假设他们打算给 我们一个合理的长度的消息。 也许几行,诸如此类的东西。 因此,我们不检查。 相反,他们养活我们的 整本书就是一个消息, 和溢出的量 我们已经分配给这个空间。 什么情况是它可能会覆盖 这是不应该的地方。 所以我知道马兰教授说: 一些关于缓冲区溢出攻击。 所以这就是用户将输入 在希望中的一些数据量庞大 他过去覆盖 您的缓冲区的末尾 并取代something--我不知道 我我们这些幻灯片在这里。 我不认为我们有 这些幻灯片在这里。 但基本上,他改写 内存的某些部分 这让他有机会接触 到您的计算机的某些部分 你会不会 通常有机会获得。 最重要的事情有 缓冲区溢出是刚刚 要明白,它 当你不发生 检查多少钱你 用户把英寸 如果你是那种不 维护反对, 并在其最简单的 的东西,它只是你的用户 输入巨量 企图数据 覆盖一些安全 你的内存的一部分。 这就是它。 因此,这在这里,堆栈和堆。 基本上所有这仅仅是 的存储器中的表示 和那里的东西都存放。 这是一种真正的 所有你需要知道的。 最大的事情 你需要知道的 that--如果让我看看 这里有个better--。 因此,这是堆栈在这里。 所以栈,是因为有 所有的功能 你调用在任何给定的时间。 和什么是重要的要记住 上周去关闭使用malloc 是你真的没有 必要的控制权。 这一切都依赖于一定的时 函数执行。 并且当它们被执行时,它们 有所谓的堆栈帧 那去了这里。 因此,那种一切发生 没有你的任何真正的投入。 你写你的程序, 你让它运行, 与层叠种取 关心本身,因为它需要。 所以,如果在主你打电话 多维数据集,将在这里通过了。 这将创建一个框架。 但有明确你做什么 创建比其他​​栈帧 写开头的函数,OK? 是什么样的你下 控制是使用malloc堆。 所以每当你malloc的东西, 你是从堆取内存。 那就是记忆,你 有,由于缺乏一个更好的词, 显式控制, 因为记得使用malloc 它基本上有 直到你说,否则。 对于那些你谁 观看节最后一周, 它的存在,直到你告诉它去了。 它会在那里,除非 否则不能说。 所以堆只是一些 你能想到的内存 你有控制权。 而这些仅仅是 两个不同的大事情。 除此之外,你不应该有 要过分担心堆栈和堆 疑问或通常更公正 如果你有本地的参数 或函数会是 在堆栈或堆。 显然,在这种情况下 这将是堆栈。 如果你mallocing的东西, 那是哪里来的? 堆。 如果你看一下练习测验,那些 一般问题的类型 他们有。 您不必担心 太多了。 你进入更明确 关于堆栈和堆 稍后或在其它的CS类。 所以只是有样的 什么是总体思路 会好的,这是我 刚种走了过去。 任何其他议题? 是吗? 听众:你可以走了 再次三分球真的很快? ZAMYLA陈:指针? 你想概念 指针概述 或者你用指针练? 有点像语法:受众。 ZAMYLA陈:语法? 是啊。 OK,我们到达那里。 是啊,所以这只是种东西 当你有一个递归函数, 每一次递归函数是 所谓的,它只是增加了其它的堆栈帧。 相当多的例子 怎么,你真的不 有超过控制 在您的堆栈帧。 OK,指针。 好吧,所以创建的指针。 请记住,这只是输入的明星。 所以,无论数据类型 你会被指向。 因此,这将是一个指向整数的指针。 这将是一个指针,指向一个char。 这将是一个指针,指向一个float。 因此,它基本上是什么 你希望它是指向, 明星是如何声明的指针,好不好? 不过,那显然就有点 当你有麻烦的指针 或者你有什么明星。 所以,最大的区别是 当你declaring-- 所以我们有some--这样 这需要一些INT明星。 因此,这是一些指针 要求X为int,对不对? 所以请记住这是什么呢 这是调用系统X。 并且这将 有一些地址,对吧? 所以,我们只能说这是我们的地址。 指针持有地址。 那么,这说的是,在这 位置,我们存储一个int。 因此,另一种方式,我们能想到的 这是这是某些整数。 我们还没有真正分配给 做任何事,但它只是一个int。 因此,我们可以做的是,如果我们不出演X 等于5,这将成为一个5,OK? 这是说去什么x是 指着,所以去这个地址 并使其等于5。 因此,我们分配5到这个地址,对吧? 如果你这样做的话, 这给我们的地址。 这是操作者的地址。 那么,什么是x的地址? 我们不知道。 我们还没有分配它的地址。 我们可以说这是some--现在我们给 它的地址,所以地址为4。 而实际上,如果我们经历的东西 种这样的,我们所做的事情。 所以通过这里 - 我觉得工作 它帮助,如果你画出来的指针。 如果你对你的考试,我 强烈推荐绘图框。 所以这第一个,诠释x等于5。 这只是意味着我们有一些 放置在内存中是5,对不对? 而我们在这里表告诉我们 它的地址为0×04。 然后我们创建一些指针。 因此,让我们打破这一次。 因此,这带来了一些 盒为int,对不对? 这是怎么回事举行 在它的一些地址。 因此,这是一些指针。 这粉笔是非常小的。 因此,我们在这里有一些指针。 和我们同桌告诉我们 这是地址为0x08的。 凉爽。 我们正在分配 它到x的地址。 请记住,指针持有地址,OK? 因此,如果我们要举行的x,我们有 使用地址运算符,它 为符号,以获取地址 的x,对在这种情况下,0×04。 然后,如果我们有 一些INT副本,这只是 创建一些其他的盒子 拥有一个int称为复制。 如果我们给它分配给this-- 所以这是引用它。 所以说去什么 地址指针持有。 指针保持这个地址, 所以我们会去在这里, 我们说好,有什么的呢? 这是5。 所以副本将成为5。 有意义吗? 如果我想指定 这只是指针。 什么指针实际上等于? 这纯粹是什么 指针包含,对不对? 然后,如果我这样做? 什么副本呢? 听众:0x08的。 ZAMYLA陈:是的,在 我们的指针的地址。 的任何一部分 需要被重新解释? 凉爽。 肯定是有非常 在测验一个有趣的问题 我们可以通过这 为您提供了更多的实践。 从上周的家伙可以 告诉你,这不是那么糟糕。 我们通过一个完整的有 图中,每个人都做得很好。 好了,所以这是概述 的指针的语法。 最重要的事情是如何理解 创建它们,做参考, 和,确定地址? 凉爽。 在任何其他的话题 我们将深入实践。 此外,如果我们正在经历 实践中的问题 这里面的东西,你想要一个 复习时,我们可以做到这一点。 你有什么? 听众:结构体和链表。 ZAMYLA陈:结构体 和链表,确定。 如此结构。 实际上,我们打算 在今晚了。 OK,所以结构。 结构基本上 只是一种方式为你举行 不同类型的多个值。 所以用一个数组我们 收缩到一个数据类型。 我们的数组要么有只是数字, 或者仅仅是字符,或仅仅是花车。 但是,也许你需要 包含不止于此。 也许你需要的,如果要hold-- 你在谈论一个学生, 你将拥有自己的房子,他们的 ID号,他们的年龄,他们居住的地方, 对不对? 而所有这些都 不同种类的类型。 所以,你不能存储 这些都在一个数组中。 所以你能做的就是你 可以创建一个结构,它 你能想到的是你 自己的个人数据类型。 而不是那么仅仅有整型 而不是仅仅有花车和, 你可以有一个类型的学生 拥有所有这这些领域。 因此,我们初始化方式 我们的结构is--实际 因为我的写作是可怕的,我们 要过渡到打字。 呜。 好了,如果我们想创建一个struct-- 我只是把它倒在这里。 无视于任何主 我们将在以后使用。 所以,你想要做的方式 它是用typedef结构。 让我们只需要调用这个学生 因为这是我使用。 好了,类型定义意味着你 定义一个新类型,行吗? 也有细微的差别,当你做进 只是一个结构与一个typedef结构。 对于所有意图和 的目的,你们只是 要承担他们 大致相同,只是 使用typedef结构现在。 它会成为这样更明显的 下一个P所设置的这些差异, 但我不认为你需要 担心现在。 我宁愿你 知道如何创建一个, 访问它,并分配[?值。 ?] 一种新型结构,并 我们要求它的学生。 所以,我们就大功告成了创建此之后, 对于所有意图和目的, 你将有一个名为学生类型。 你可以把它仅仅作为一种类型 就像一个int或浮点或字符。 这只是另一种类型,好不好? 所以在这一块,我们有什么? 我们也许有一个名字。 因此,也许我们需要一个字符串名称。 我们有可能为int这是一个ID。 此外,我们还有另一 这就是电话号码。 我们已经some--让我们来看看。 还有什么可能我们有吗? 我们将有一些字符串在他的家里。 所有的事情,有个学生了。 所以这个现在创建一个结构。 那么,如何可能我们创建了一个学生吗? 如果我们有一些变量是 要谈论沃克在这里, 所以我们have--我们只是 要调用此walker。 他需要的类型。 什么是你喜欢的类型? 听众:学生。 ZAMYLA陈:学生。 因此,这只是创建一个对象,你可以 想拥有这一切。 您刚刚创建了一个学步车学生。 所以,现在我们需要能够 指定所有这些,对不对? 因此,没有人记得如何 我们一个结构中访问? 听众:期。 ZAMYLA陈:没错时期。 因此,如果我们想分配 他的名字,我们可以做到这一点。 显然,这会 在这里be--这部分将 以内为主,所以 居然让我做到这一点。 此声明上述主让 我们可以在主要使用它。 所以,现在我希望它做的ID, 而我们只是做一些在那里, 然后我们会分配一个房子。 巴姆。 凉爽。 所以,现在我们应该永远需要访问 任何后来on--也许we-- 如果我们需要访问什么, 我们只是做一个int副本ID。 我想复制 沃克的ID到这一点。 我会如何做呢? 你需要助行器中访问 结构为[?去那?] [? E']。 并以同样的方式,我们 在这里,如何分配它 也许我们访问它的时候,我们要 给该值到别的东西? 听众:Walker.id。 ZAMYLA陈:是的,没错。 这就是几乎所有的 你需要知道的结构。 你只需要想想 它们作为另一个变量。 基本上是一个创建 自己的变量类型,好不好? 您可以使用它来声明 变量以任何方式。 在这里,沃克仍然是一个变数。 它只是一个类型的学生,而不是现在 ,一个int类型,或字符串类型 或char类型。 如果有一个简单的方法来说话 关于结构,它真的只是一个 创建自己的数据类型 这可以让你组 所有这些不同的 样的数据一起。 这是否有道理? 行。 这和访问点使用。 几乎所有你所需要的。 OK,在哪里我的PowerPoint中去? 这里是。 嗯,这是奇怪的。 啊哈。 OK,爽。 任何其他的事情还是我们 要前往练? 实践? 行。 真棒。 我要退出了。 如果在任何点期间 练习题, 我很高兴地改造 并通过东西。 所以,我有竞猜零在这里。 如果你们想拉 它在您的计算机上, 就像需要五 几分钟浏览。 也许选择一些顶级 你想问题,走了过来。 如果你们不能决定,我们只 慢慢地开始通过他们的工作, 但我敢肯定,有一些将要 你是特别的问题 热衷于谈论,并有 我的工作,通过与你的所有。 因此,只要继续前进,走五分钟。 翻阅。 这是从2013年的测验。 听众:零? ZAMYLA陈:是啊,测验为零。 我们不是在做测验1东西。 我们会做,在一两个星期。 也为那些你们谁 进来晚了,我们有糖果, 所以做你们要糖果? 听众:当然。 ZAMYLA陈:我只是 要通过身边。 嘿,如果你们到这里来 早期,你会得到更多的糖果。 没关系。 本,你要糖果? 你想点? 还有,如果士力架 有人想士力架。 我会留下来在这里和这里。 随意。 你想了吗? 听众:所有设置。 谢谢。 ZAMYLA陈:我有一个不错的 小桩有开头。 你们去参加测验和 我到有一个测验分级派对。 这是一片混乱。 900考试。 这将是这么多的乐趣。 将是巨大的。 我敢肯定这是1 最大工作人员粘接 在今年的夜晚。 有没有人在做测验零 去年又出于好奇? 听众:它的一部分。 ZAMYLA陈:它的部分,确定。 你对其中任何一个问题吗? 观众:我已经 去了办公时间。 谢谢你,虽然。 ZAMYLA陈:嗯,希望 它仍然是种有益的。 你什么时候去 办公时间是什么? 听众:我的TF有他们今天下午。 ZAMYLA陈:哦。 谁是你的TF? 听众:弗雷德[? Wujaya?]。 ZAMYLA陈:有这么多的转录因子。 这么多。 行。 任何人有任何开始,我可以 记下我们要工作? 我假设指针 1用表。 去了。 听众:也许交换机之一。 ZAMYLA陈:所以12号? 我认为数字8和9很可能是 那些人想要走了过来。 听众:而10和11。 ZAMYLA陈:而且你们知道 你的笔记一页,对不对? 听众:是啊,所以什么 我们可以把上。 ZAMYLA陈:你自己也可以 把你想要的任何东西。 并且它可以键入。 据我记得,我们进行了类型化的。 听众:你可以做 背部和两侧? ZAMYLA陈:是啊,两侧。 因此,像堆和 [?后端?]堆,你的跑步 次。 有用的。 有关可能的小事 指针来提醒你。 语法的东西。 其就像一个骨架 程序可超有用。 我知道,我总是忘了什么 我应该写INT为主, 因为我一直只是复制 我以前的P组贴 或者它已经存在,所以 我从来没有真正写的, 所以具有可超有用。 好了,我们为什么不 先从8号呢? 行。 行。 因此,考虑下面的程序。 当我们看到这么明显 指针,这可能 一个好主意,开始绘制,对不对? 我想知道我所有的 大支粉笔去了。 这是种烦人。 所以,我们在这里的一些交换功能 那将采取两个指针。 所以在这种情况下,它们 实际上应该是切换 事情与我们原来的交换 函数,只用了复印件。 那么,它会做的 is--让我们先从主, 因为这是1。 因此,我们有一些INT×1。 我们有一些Ÿ这等于2。 然后我们有一些互换 那将采取这些。 让我们看看我们是否在这里。 而在我们的table--哦男孩。 我怎么做呢? 我要吸取我的表在这里。 勉强使其存在。 几乎没有做它。 1,2,3,4,5,6,7。 他们给我们1为1,1 2。 凉爽。 真棒。 因此,3。 这里面的[?一个1?] 行。 然后x的地址为0x123。 而Y是Ox127。 凉爽。 行。 我希望你们在这方面努力 就只是like--工作 与你周围的人。 我想我已经说 当我成立。 在它的工作。 试图通过它的工作 自己一两分钟, 然后我将它和你在一起。 因为你是真正的唯一途径 要学习就是做你自己。 别担心。 祝好运。 OK,我们为什么不慢 开始通过这个工作。 因此,每个人都盯着一行,x为1。 2行后中,x和 y是1和2,对吧? 凉爽。 所以三线是哪里的东西 获得有趣的课程。 因此,我们在这里所做的 是我们现在已经交换。 我们说的x和y有那些点 或者它们具有x和y的地址, 对不对? 所以在这种情况下,三个 什么是a的值? 一个已经通过了,已经给出 x的地址值,对不对? 听众:1? ZAMYLA陈:所以我们把它添加到X? 什么是X的地址? 听众:0x123的。 ZAMYLA陈:没错。 但究竟什么是真正指向? 如果我们取消引用, 什么样的价值会不会得到。 听众:1。 ZAMYLA陈:那就 给我们1,原因是什么 我们说是去这个 地址告诉我们的价值是什么。 那么,什么将B? 听众:0x127。 ZAMYLA陈:没错。 所以它的y的地址。 然后呢[?提领? ?] 听众:2。 ZAMYLA陈:好了,现在4。 我们说一个是equal--现在好了,我们已经 做整型温度等于一个明星。 那么什么样的变化? 这里只有一件事 改变在这里。 它是什么? 听众:温度。 ZAMYLA陈:临时。 因此,我们可以重写所有这些。 这些一个好的策略 刚刚搞清楚 什么样的变化,因为最常见 这里只有一件事,就是 要改变在任何给定的点,好不好? 因此,我们已经临时指派。 现在,我们的下一个点,五,我们 取得明星等于星级的住宿。 还等什么,现在的变化? 听众:一星。 ZAMYLA陈:一星,所以 一切保持不变。 又是什么明星一个平等的? 听众:2。 ZAMYLA陈:2。 可爱的。 真棒。 OK,然后现在我们有 开始b等于温度。 所以,唯一的变化是星级的住宿。 其他一切保持不变。 什么是明星B等于现在呢? 你已经完成了表。 因为现在到了最后,如果说X 和y,我们知道,在这个point-- 我们知道,当我们 改一星2, 它说,这是什么做的还算可以, 地址为0x123这里,改变它。 现在,这是2。 然后在这一点上, 我们说好了,去星级的住宿。 所以去的地址在 0x127,并使其成为1。 所以,现在在非常时候结束 我们实际上回归了主, 我们其实有x是 等于2且y等于1。 每个人都好有吗? OK,爽。 9号。 你们在这方面努力。 我要成立一个董事会 因此,我们可以通过它借鉴。 这将是一个爆炸。 大表可以是 真正可怕的,我知道。 但如果你只是把他们一行 一时间,他们得到少了很多可怕的。 行。 所以,你知道,这将有 通过主首先,对到哪里去了? x和y初始化和 然后尝试交换它们。 因此,即使是掉上面的,真正的方式, 那张是,我们正在经历为主, 然后它调用 高达掉,好吗? 因此,每个人都知道这一点。 那么,哪一个你 男人想下手? 有没有人真的知道 关于其中之一? 甚至部分吗? 为什么我们不使用X开始? 什么是我们认为X是? 听众:1。 ZAMYLA陈:1。 那么,为什么是2。 而这是因为 这里的区别很大 是我们唯一 通过副本,对不对? 我们不通过引用传递。 因此,即使在结束时 这一计划的x和y 住一样的,因为他们 只是副本中的交换功能。 他们没有真正改变,对不对? 那么,关于A,B,和温度? 听众:A是B。 ZAMYLA陈:A是B。 所以在这种情况下,为 x,它是1,对不对? 所以在这里,我们通过它走。 所以,在开始时,一个与 b是1和2和不确定的。 所以,最初的临时变 分配到一个,所以温度是1。 一个等于b,那么我们得到 2,和b等于温度。 现在,我们得到1。 听众:在上一个其 交换符号x和符号年。 究竟是什么意思呢? ZAMYLA陈:所以这意味着, 你是通过引用传递。 因此,这意味着你实际上 通过在那里的地址 x和y的存储位置。 听众:但是你不 换地址。 ZAMYLA陈:你不是 换地址。 你换什么在其中。 比如什么是在这个地址, 这就是为什么它的工作原理。 与这一计划在这里是什么 你做的是你要创建的副本。 所以,你有存在的x和y 作为自己的变量在这里。 但是当你通过 这些掉期,它的 因为如果你正在创建 这完全是另外一套。 所以你从来没有真正 动人的x和y。 听众:如果符号X是什么东西在 x的地址,你会出演X是什么? ZAMYLA陈:与号x是什么时 x的地址,然后star--好, 在这种情况下,x不是指针。 听众:哦,好吧。 所以,你只能这样做 因为它不是一个指针。 ZAMYLA陈:对。 你只能做明星 东西是一个指针。 也许你可以做的事情了 都没有,但编译您 做疯狂的事情会发生。 而且我不完全 肯定会发生什么。 您可以随时拿 东西地址, 但你不能提领 东西是不是一个指针。 如果是有道理的,这是 一个很好的区分有。 所以不是太糟糕,不是吗? 该表是希望 让略少吓人。 行。 啊,好玩的。 所以,现在,写自己的代码。 所以我打算让你们的工作 在此约4分钟, 然后我们可以谈谈 约的方式接近它。 随意交谈的人在你身边。 另外,这是有意思的。 这就像一个所有女孩 部分现在。 非常令人兴奋。 除了张。 但张是不是真的一节的一部分。 真棒。 完美的。 所以,我会给你几个提示。 当你有这样 多个字符,其中 你有别的东西 像123或1000的东西, 需要能够循环 通过和每个转换那些。 因此,有一对夫妇 你如何能做到这一点, 但你肯定会拥有 一个for循环的地方在那里循环 通过它们,这是 有点像赠品 即使你调用strlen用, 哪一种是喜欢哦 也许你要使用的长度 字符串中的一些方式。 行。 那么,你们认为可能是 我们想要做的第一件事情之一? 有一对夫妇的情况下在这里 我们需要考虑到,对不对? 无论我们有什么事情,就是空。 我们有什么? 个案。 空。 我们认为其具有壳体 东西比09之外,对不对? 所以我们可以说有字母。 或者我们这是合法的情况下。 三种情况下想到的。 那么,哪一个你认为可能是 一个最简单的采取先照顾? 听众:空。 ZAMYLA陈:此案为null。 那么我们该怎么办呢? 听众:[听不清]。 ZAMYLA陈:是的。 什么做我想做的事? 听众:返回0。 ZAMYLA陈:没错。 真棒。 行。 所以,现在情况有信 和的情况下,它是有效的。 实际上,我们可以照顾 在一个循环的这个,好不好? 因此从另一个角度做它 - 可能是什么 一个简单的方法来检查它是否有效。 我们将不得不通过 每一个字母,做什么? 听众:检查是否是in-- ZAMYLA陈:对,你可以检查 如果是0到9之间,对不对? 然后在该情况下 它是有效的,我们 去年底,通过迭代 我们的字符串反正,对不对? 那么,为什么我们不尝试 它们合并成一个。 我们要遍历 通过了字符串,并作为我们 做到这一点,我们将第一 做一个检查,如果那封信看 或者,如果该字符是有效的。 如果是,我们要执行 操作时,我们需要将其转换。 否则,将返回0,对不对? 所以,在我们这样做,我们 可能需要一些变量 我们可以在端返回 这将是我们的实际值。 所以,我们要初始化 些值是0。 而这仅仅是我们如何开始。 所以,我要摆脱这一点。 那么我们如何去 遍历这个字符串。 顾客:循环。 ZAMYLA陈:一个for循环。 那么,什么是我们的? 观众:我是0。 ZAMYLA陈:嗯。 什么是我们迭代,直到? 听众:第STR长度。 ZAMYLA陈:好了,现在还记得 还有一个更好的方法。 [听不清]。 听众:是的,我们能做到n等于。 ZAMYLA陈:没错。 观众:我是小于n。 ZAMYLA陈:为什么 将我们想要做的是什么? 你还记得原因吗? 听众:我们必须重新计算。 ZAMYLA陈:Becasue这样你 只需要计算strlen的一次。 如果你这样做我是小于的strlen S,这意味着它会重新计算 每时间长度 您运行的for循环, 这是不是一个巨大的成本 能源,但它的 更好的做法,试图 做一次这样的事情。 除非也许你有一个疯狂的字符串 这是不断变化的,在每一次迭代。 但是,如果它保持相同,保存。 行。 然后我加再加。 真棒。 我们对我们的方式。 听众:真的很快。 首先,让我们说,我们只是 确实比第strlen的少我, 他们是我们的分级设计 在所有或正确性? 他们不是。 我们对分级的正确性 对于测验,据我所知。 我不能让一个完整的 保证,但在大多数情况下, 绝大多数是正确的,因为 你是下了很大的时间限制的。 设计通常是指 你有时间去思考 关于你的情况的风采。 好了,我们正在通过迭代。 因此,我们需要两种检查 看看这个字符是有效的 或者,如果我们能够履行我们 正常的[? A至I?]功能。 我们担心什么 即在一秒钟。 那么,为什么我们不take-- 如果任何人都可以想 约的方式来检查 查看这是否是有效的。 我们知道这将是 如果某些条件下,对​​吧? 请记住,这是 在ASCII码,因此如何可能 我们看到,如果它不是0,1, 2,3,4,5,6,7,8,或9。 听众:如果字母。 ZAMYLA陈:所以,如果将阿尔法 只是让我们知道,如果它是一个字母。 如果他们给我们一个象征,它的 还是不太去检查。 所以,如果你拉你的ASCII 表中,我们知道,从0到9 是在一个段中。 请告诉我这些数字,他们 对应于可能的话。 听众:40。 ZAMYLA陈:所以范围是喜欢40-- 听众:也许吧。 48至57。 我不知道。 ZAMYLA陈:40〜57? 听众:48,我想。 ZAMYLA陈:48〜57。 所以我们知道,那些ASCII symbols--如果ASCII值不 48至57, 它不是有效的,对不对? 所以,我们可以用它来 我们的优势可能? 我们如何获得 这封信,第一关? 我们如何访问 这个这个角色? 听众:■支架我。 ZAMYLA陈:嗯。 因为我们能想到的 作为字符串数组,记住了。 那么,我们想说的? 我们想,如果这样说的 is--我会给你一个提示。 这是一个小于。 什么你认为它 需要小于? 听众:57? ZAMYLA陈:47,对不对? 但它也代表了您一个0 在单[?辐条?],因为这是 字符0。 你也可以把47。 具有ASCII表,如 你看到的,只是一些 你应该对你的测验表。 因此,如果是这样的话,如果它是一个 比0--不见得少。 它只有两种将是 小于或大于9。 所以,你可以填写这最后给我吗? 所以,还是I S是什么,雷亚? 听众:大于9。 ZAMYLA陈:有。 这是否有意义 大家好,我们是如何到达那里? 这些问题,他们就像一旦你 看到的解决方案,它就像哦,OK。 这就是为什么练习会帮助你。 好了,我们返回0。 可爱的。 行。 否则,我们怎么想干什么? 这是最有趣的部分 它是一个多一点 喜欢数学与CS在我看来。 没有任何人有一个想法 对我们如何做到这一点? 因此,重要的是要 意识到的是第一个字符 我们正在采取将是 最高阶位的,对不对? 所以,如果我们正在寻找转换 123,我们第一次迭代 是将是1,但是我们需要 这是100到底对不对? 所以,有一件事你可以做的是, 与以后每位数 你拿,你乘以10的数值, 使得由一次到达终点, 一切都已经 向上移动,对不对? 所以第一次运行 它,你有1作为你的价值。 第二次你运行它,你 乘以10的数值。 所以,它现在将更新 10,你加你的下一个值。 然后乘上 10,添加你的下一个值。 这就是为什么他们这么一说 更像测试 数学算法与 CS,但我离题。 我不写测验。 所以,有一件事我们可以做的是我们 说值倍等于10。 所以,这是怎么回事转移 每一天,你的数字。 然后,我们只想补充。 我们希望在加什么 我们刚刚得到的,对不对? 那么,如何才能真正转变我们 ASCII字符插入数字 它代表? 所以我们知道,0等于47,对不对? 所以,如果0是47,是什么 就我们所要做的吧 实际上使其成为0的int? 听众:这是48。 ZAMYLA陈:48? 抱歉。 我们将减去48,对不对? 还记得ASCII数学? 我们只是把它们 像正常的数字。 如果你像对待数字, 他们成为有效的数字。 所以,如果我们有I S,这让我们 说,在这种情况下等于0。 第i在这种情况下,以便s 将是ASCII-- ASCII码int作为这将是47。 因此,我们可以subtract--或48。 你可以做到这一点,是一种方法。 有谁知道一个更好的 这样,我们可以做48? 我们刚才说的0 is--进入 ASCII码,你可以做报价。 所以不种它使 意识是如何工作的? 听众:在这一点上,是值0 因为即使你乘以10, 你开始用零, 所以它应该被切换? ZAMYLA陈:所以在这种情况下,你 希望在你添加到乘它, 因为在这种情况下,是的,它会 还是be--我指针丢失。 在这种情况下的值,所述第一 一次,我们运行将是零。 所以你只需添加 在这第一个数字。 下一次最重要的是 你迭代,要调换起来 你把你的下一个数字之前。 这是否澄清的吗? 行。 有时候,你会 让更多的怪异MATHY的东西。 如果你有最 这一点,你还是会 以get--你要做的非常好。 部分信贷是一个很 大的事情上CS50测验。 所以写你知道什么。 如果你得到的一切 除了这里,你 还是打算做 很好的问题。 因为你有显示, OK,我几乎知道。 我知道我需要遍历。 我知道我需要检查。 我只是不太 获得如何转换它。 你会好的。 是的,你要 失去了两分, 但你仍然会得到一个 东西分好多个 这样,如果你 失踪的这两条线。 我会是这样确定,此人 知道他们在做什么。 数学是很难的。 所以,我要说你会被罚款。 好了,你们准备好 立即试用strlen的使用指针 那你们是指针的主人? 所以,我会让你们的工作 上一点点。 如果有人需要复习。 所以,你要使用指针 算术,然后如果s为null, 你的实现应该返回0。 像这样的事情,让你 真的很高兴只是调用strlen 在一天结束。 我觉得这个可能是有点 比最后一个,这容易 还是不错的。 我给你们一分钟, 然后,我们将努力通过它。 然后我们能去的交换机。 OK,准备家伙? 也许一点点。 所以,我已经给了你 两种选择,不是吗? 无论是检查空,如果返回0 它是,或实际计算的长度。 那么,谁愿意写检查空? 去了。 听众:如果括号s 等于等于空返回0。 ZAMYLA陈:可爱。 我喜欢你一半的问题 只是检查空。 我知道跟你们最后 上周我当时想检查null 从字面上每一次。 OK,so-- 听众:如果返回0是只有一条线, 我们还需要在大括号? ZAMYLA陈:在技术上不 需要他们,只要你是一致的。 这是很好的做法只是 取得的习惯 使用花括号, 但在技术上没有。 你不需要他们一行。 我们只是倾向于推荐 对于开始计划的人。 所以,现在什么可能我们要在这里做? 所以,现在我们知道,我们的字符串是有效的。 我们要保持的计算长度。 什么是可能是第一个 我们想要做的事情吗? 听众:创建 INT这就是长度。 ZAMYLA陈:没错。 听众:我们希望能够将其设置为? ZAMYLA陈:0。 完美的。 行。 现在确实想做些什么? 这是真正的大头吧。 去了。 听众:所以你可能会做一个for循环。 然后,因为当你打电话是你是 得到的第一件事情的地址, 你将开始与我等于0。 然后只要X 再加上我是不回斜线0。 ZAMYLA陈:空终结。 听众:空终结。 然后添加一个长度。 ZAMYLA陈:是的。 好了,让把那 到非常具体的代码。 但是,这是一个完美的主意。 这正是我们正在做的。 我们将要迭代 通过使用指针。 所以我们想要做的 是不是一个int 在这里,因为我们 不是指的它。 我们指的是一个开始 字符串,开始被一些地址, 对不对? 所以,我们希望有一个指针。 因此,我们将有一些烧焦的明星, 因为它符合我们的对吗? 因此,这是一些点,我们正在初始化 字符串的开始,好不好? 因此,让我们叫它我。 如果是字符串的开始, 什么是将要分配给? 不为0。 我们希望它是 开始我们的字符串。 什么表示的起始 我们这是给我们的字符串? 听众:刚才秒。 ZAMYLA陈:秒。 因此,这带来了一些新的指针 代表了我们的字符串的开始,好不好? 另一种方式把它 就像这里是我们的数组。 这就是我们的字符串,S。 所以我们可以说这是 第一点,这是为0x4。 04。 这是我们的S,其中包含该地址。 而我们刚刚创建另外一个名为 i的仅仅指的是同一件事。 所以,他们都只是指向 我们的字符串的开头。 这仅仅是一个图形表示。 所以,现在我们要 做的是我们要遍历 我们的条件迭代 通过我们的字符串。 现在购物。 到了店,伙计们。 是我们要不断更新,直到 我们到达空终止,对不对? 那么,什么会是什么样子的? 难道我们要我,还是我们想要 明星是我的问题吗? 是空终止地址 什么存放的地址? 位于地址,对吧? 因此,我们需要解引用是什么 这里,因为这仅仅是一些地址。 要真正得到启动 我们需要解引用这个 所以,我们实际上得到 什么是在这个第一的位置。 因此,如果我们做明星我什么 我们不希望它等于? 听众:反斜杠? ZAMYLA陈:有。 这是否有意义大家? 我们需要进入我们的字符串, 确保它不是结束。 然后我们就可以只更新这个样子。 正常更新。 因此,只要这些 MET,你有什么需要我们做什么? 听众:长度加再加。 ZAMYLA陈:嗯。 再经过循环 结束,有什么事我们要回来吗? 听众:长度? ZAMYLA陈:长度。 你去那里。 这其中显然肉 为理解这一循环。 每个人都得到了怎样的工作? 我很高兴能重来一次。 听众:第二 部分,所以明星我有, 这就是first--地址 ZAMYLA陈:这不是地址。 这是什么的。 听众:这实际上是在那里。 ZAMYLA陈:这是 什么是真正在那里。 因此,这是saying--让 我做这更好的。 因此,这是0×04,而我只是去 说我打算让我的这个名字。 行。 是的,我知道我有测验检讨今晚。 很多测验审查。 所以我们说这个字符串 是我的名字,佳佳。 有点乱,但它的存在。 和s表示的位置 字符串开始的地方, 所以我打算让这个 real--这是一个地址, 其中字符串开始,对不对? 因此,我们在这里做什么是我们想要 使用指针遍历。 因此,我们创建了一些指针,我,也 等于该字符串的开始。 并且在每个点处,我们希望 继续经历阵列 在这里,直到我们打空终止。 所以,我们总是要检查什么 在这些地址。 因此,我们解引用我,让 我们第一次做到这一点,我们 说好,什么是地址0×04? 这是一个一。 OK,我们是很好的。 增加的长度。 移动到下一个。 所以,我 - 记三分球增加的 无论他们指向的大小。 所以在这种情况下,由于它是 一个char,它会通过一个更新。 所以,现在我们要看看5, 这意味着它是怎么回事了。 所以说,好了,去0x05的。 是什么在那里? 这是一个l。 它会继续这样做, 直到遇到这一个。 它说,OK,什么在 无论地址是? 空终止,OK。 出口。 而刚刚返回的长度。 因为你需要什么是真正的 该地址,而不是地址本身。 也有极少数的地方 你真正需要的地址。 大多数时间,当 您正在使用的,它的 当你第一次 分配指针或时 你传递到另一个函数。 好了,大家都好有? 的种类? 行。 所以看起来我们已经 留下了约12分钟, 所以我们会去到 也许我们的最后一个问题, 然后再有任何 已经想出概念 在此期间,我们可以 很快就离开了这一点。 所以切换齿轮中的最后一个 问题就在这里,switch语句。 所以,你的工作就是重写这个 这样它的行为相同 但不使用交换机。 垩白的双手。 所以这个蝙蝠的问题吗? 无? 行。 大家都明白,如果 案件没有经过任何事情, 这意味着,它应该 按照下一步? 所以壳体1和2在此情况下 做同样的事情。 有时容易混淆的地方。 行。 任何人有任何想法? 是吗? 听众:所以,你可以 只是做if语句。 ZAMYLA陈:嗯。 那么,什么是我们的第一次? 听众:如果n等于等于1, 和2线或n等于 等于2,然后打印小。 然后,你可以做的,如果其他人? 或者,你可以只是做一个if? ZAMYLA陈:如果你可以做别的吗? 听众:这是否重要,如果你这样做的话? ZAMYLA陈:所以它的作用。 是否anyone--这样,你 会得到相同的输出 如果你只使用IFS与 如果使用其他IFS。 你们可以想到的原因 为什么您可能希望使用其他 如果对大量IFS的? 要与效率。 是吗? 听众:它会检查 所有的IFS每次。 ZAMYLA陈:所以,即使 它击中了这第一个, 它会在去检查每隔之一。 所以,你要使用的情况下,如果其他IFS 其中只有永远都适用其中之一。 所以互相排斥 我们往往会说。 如果您有一堆IFS的,这意味着 也许不止一个人 问题,也许比多 其中之一可以是真实的。 而您希望他们两个 如果他们真的来执行。 如果你只想要其中的一个工作 在这些相互排斥的情况下, 你想,如果用别的,因为 这一切,是因为有效率。 你的代码仅仅是更好的设计 如果坚持这种做法。 因此,在这种情况下,我们将有一个ELSE IF。 这会是什么? 听众:n等于等于3。 ZAMYLA陈:完美。 打印介质。 然后在我们的最后 情况下,我们有什么? 否则否则,如果? 听众:否则。 ZAMYLA陈:我们want--你想 否则,如果因为我们有具体的案例。 这不是那种一抓所有。 如果在switch--有一个缺省 记得交换机可以有情况, 然后你有默认值。 如果你有一个默认的,这是一种 你else语句出现。 但是如果它具有唯一的情况, 这意味着你需要 进行检查,看它是否每个那些。 所以在这种情况下,它会在4或5。 我们要打印关闭。 这是大的。 和你去。 这将是你的程序。 所以在这种情况下,如果我们 有一个默认的东西, 我们将有一个东西在 不管它希望我们做的。 所以这是一个很好的区别 要知道,了解。 这是否有助于开关吗? 完美的。 行。 我们拥有约八分钟离开。 难道你们有什么 其他高层次的概念? 一般的问题? 是吗? 观众:我有一个 对他们中的一个问题, 这是关于随机 在测验零数发生器。 ZAMYLA陈:哦,那一个。 一个是另一个的地方 它更多的数学than--肯定的。 该解决方案以that--连我的时候 我看到它,我很喜欢,这是什么。 听众:这是7号。 ZAMYLA陈:这在我看来很奇怪。 所以基本上你想要 使用drand48,这 会给你一些 介于0和1个数。 并且你想用它, 你以某种方式得到A-- 而且它更的一道数学题 比我想象的CS问题。 你做它 - 的方式, 有时它也只是这样。 再次,这些是 情况下,它是一种 像写什么你 可以和部分信用。 因此,如果我们想一回, 我们知道,我们是 将要使用drand48 在某种程度上,对不对? 那么,为什么我们不记下来。 我们使用它以某种方式。 他们有办法 你们用它 这样,我会尽量解释。 所以基本上这里会发生什么 是因为它是一个介于0和1, 你在做什么,是你乘 by--这不能不说是一个数学问题。 刚满免责声明,这是 完全是数学问题。 你正在做的是 因为0和1,您 希望它是内 这个范围,你居然 弄清楚如何大 的范围是,然后 你基本上按比例放大, 这是这是什么做的。 B减一给你的范围内, 这些数字之间的差异。 您可以在0繁殖 和1,再加入一刚 意味着你的缩放起来 所以,它的a和b之间, 我真的不喜欢这个问题。 正如我所说的,本测验 是指包括 人谁不舒服, 介于两者之间, ,更舒适。 因此,如果他们说得那么 这是什么 每个人都在少 舒适的地方会得到, 我们将有太多太多 人得分完善, 和更舒适的会是无聊。 因此,他们总是有这些 种脑筋急转弯问题 那些原本应该是有点困难 这需要一定的创造性思维。 当你看到他们, 不要太难倒。 我肯定会说的倒装 通过你的第一次测验。 解决问题 你知道你可以, 因为没有使用卡住 在一个问题,当存在三个 或在网页上四个或五个 之后,你可以很容易地做到。 听众:到底为什么你 由范围乘以? ZAMYLA陈:你乘的范围 你知道 - 它是怎么样经过多少 你想要? 所以,你能想到的,因为它 返回一个介于0和1之间的数, 你可以把它看成是一个百分比。 因此,它基本上是说,如果我们有 我们的数字线在这里,在这里, b是在这里。 你就像多少钱过去呢? 就是我们正在做的。 所以你刚才问的 该范围,百分数 就是它给你。 然后你基本上只是 通过增加其放大。 这是一个数学脑筋急转弯。 如果有任何最后一分钟的意见,我 将通过提问说,翻转, 找出哪些是你 知道似的,哦,我得到这个。 几乎可以肯定他们会 是你不知道的问题 或者,你要去有时间 对,所以打你的长处,好不好? 你们要大。 有很多的 是有原因的问题, 让您有时间 种有机会 证明了什么 你在真的很好。 因此,它是确定的,如果你是 在一切都不好。 发挥你的长处。 是吗? 听众:原来是这样打算 返回东西是截断? 是的,它会因为drand 0和1之间的回报。 它会返回一个int, 因为它会截断 当我们添加一个或它繁殖。 凉爽。 在最后一分钟的问题吗? 你们要做大。 你会是美妙的。 并且即使不是这样,将 是这里的糖果下周。 我会爱你。 我爱你们不管。 好了,祝大家好运。 有一个伟大的时间。 你会好起来的。 你知道吗? 在两天它会 要结束了,而我 对周四2期中考试,所以 至少你们会做。 好吧,我会看到你们下周。