ANDI鹏：好的。
欢迎来到第四个星期
这是一个美丽的一天 在这里纽黑文
所以我真的觉得疏 孩子散射的
今天加入了我部分，谢谢。
>> 所以很快，就在我们 开始，今天的议程。
我们将走过去一 几句简短的公告。
我们有一个非常古怪的时间表 即将在接下来的两个星期
左右，所以我们要说明一下。
其次，我知道， 大家最喜欢的topic--
我敢肯定，这融化你的心 讲座过程中，不用担心，
那种我仍然不明白这一点。
没关系。
这是一个笑话。
其实我明白这一点。
但我会确保 你们得到它了。
所以，我们要花费 真的，真的很好量
时间今天谈论的指针。
正如你所看到的，糖果的 今天的谈话是巨大的。
我们真的要保持 that--是啊，这是正确的。
继续服用的糖果。
我打算现在通过他们周围。
别担心。
我们要真正尝试 留人的血糖
，因为大脑会烧 当今一些氧气，因为指针
真的，真的很难。
然后我们要谈 内存管理哪一种是
在相同的领域。
而且我们要动 上重定向和文件
I / O这只是语法，不错 事情我们应该谈谈。
然后最后，我 要再次尝试
离开像10，15分钟pset4。
在几天之内这是因为所以我们 那种将真正给你
如果你一些有用的提示 已经开始了这一点。
酷。
好。
因此，一些公告 对于这个即将到来的一周。
评级。
我真的不知道 这一点你们有多少人
家伙居然在我 section--你行吗？
好。
但是，对于那些你 谁在我的部分，
只是一对夫妇的批语分级。
>> 评论首先，切实抓紧抓好。
你们当中谁不评论，你 知道你是谁，因为你可能
得到这个星期dinged一些造型加分。
只要确保在所有的 程序添加一些评论。
真的，风格是很容易 得到正确的点作为一个范围。
所以对我们来说，只要 确保你是那种
的增加在所有的简要说明 你对你在做什么项目。
>> Secondly--这是一个巨大的问题 很多助教过去week--
所以一定要确保你上传到 正确的文件夹正确
命名方案。
为什么我们要求这样做的原因是 因为我们在分级过程中，
实际上上运行脚本您 自动下载代码
所有的pset中，运行 对所有的人都正确性测试，
然后上传你的分数 直接进入成绩册。
但是，在任何时候，如果 正确命名你的程序，
这螺丝了整个 节目给大家。
>> 因此，合法， 这个美丽的脚本
我们已经写了呢 这一切对我们来说，完全
崩溃，如果您还没有 你的程序正确命名。
因此，只要上传到正确的 文件夹，让他们正确命名，
然后生活是美好的。
我明白你的pset回来 以你们前面
因为我很快得到他们品位。
是啊。
好。
同时，我们要谈 about--耶鲁大学有一个非常，非常
古怪的时间表在今后两个星期。
因此，那些你们的 哈佛，这并不适用。
但对于我们可爱的孩子们在耶鲁大学，我们有 所谓秋季break--抱歉，
Harvard--我们有 5天关闭学校。
虽然这是可爱的，它 那种打乱了我们的节奏PSET
因为pset中是由于周四，周五。
所以，如果我们不在这里 周四，周五，我们
不能为你们工作 由于周四，周五。
>> 所以，我们要做的is--我们做什么 像99％确定这是发生了什么事，
可能有一些 改变，但我认为这是
subtle--是我们要 have--这个星期是正常的。
因此，我们有我们的部分 周二其次是办公时间
整周的其余部分 然后pset4是由于上周五。
然后，你们都知道，作为 上周我提醒你们，
我们有我们的测验0 周三上来。
>> 因此，作为学生自己， 我知道，你们中几乎没有
球员将实际工作 您的测验之前pset5两天。
所以，我们要什么 可能最终做的是，
周一晚上，我们要去 实际上，从5:30到7:00，
有一个简要的回顾 会议议题涵盖。
如果它是一个不明确 审查会议或一个Q＆A。
这将是某种形式的审查 形式，我们将讨论
有关为你们的一些话题。
>> 然后周一和周二晚 这一周，从8:00到11:00，
我们将有办公时间。
这些办公时间将最 有可能是更多刚进来，
问助教你的问题有关 你感到困惑的任何概念，
他们就会种下去了你 和审查概念测验。
测验0，如果你在 周一，周三部分，
将周三的中 在课堂分类 - 周三。
然后，如果你在 周二，周四部分，
也将是周四在课堂上。
你真的无法选择 你去哪一个。
如果你是一个周一，周三， 你必须去到星期三。
如果你在周二，周四 你必须要到周四。
但后来那天晚上， 我们可爱的工作人员，将
有一个巨大的测验中分级方 我们将让你的分数还给你
那晚。
在什么时候？
目前还不清楚，谁知道，但它会 回来给你24小时内
所以，你们希望 有一些反馈，在周五。
>> 然后我们有一个非常古怪的一周。
所以pset5是其一 今年最困难的pset。
所以，对不起你们。
我们要去尝试 做的是我们要拥有
一些实际的支持，那个周末。
因为，正如你们所看到的， PSET是由于秋天休息前。
我们没有支持 你们在秋天休息
所以我们真的有种 希望这句话的，
让我们在以得到这个， 下面就让我们真的，真的很难
这接下来的两个星期，得到这个测验 并添加这两个pset中有做
然后你们有一个不错的放松 7天不假思索CS。
>> 因此，为了使该至 发生，我们可能
要动我的第 至周日下午。
这将被拍摄下来，所以没有 烦恼，如果你不能来。
但网上拍戏会 在那里，访问
让你们有星期日， 周一，周二，上班pset5。
然后它的秋天 打破，没有CS，然后
我们回来，它在研磨回来。
>> 但是，这将是一个 可爱的周秋季休息
我们真的希望把它作为压力 免费提供给大家尽可能哪些
所以，我们提出的PSET是由于 前秋突破，而不是之后。
因为it's--我的意思是，我有种感觉 喜欢它违背了目的
秋天休息，如果有以后的截止日期 在秋天休息反正不支持。
所以这是rather--我想 我们宁愿专注于现在。
有没有人有问题 有关日程安排？
什么困惑？
是啊。
>> 听众：我们仍然有 在21日的演讲？
ANDI彭：是的。
因此，21号，这里将是 讲座是活的哈佛大学。
我不知道大卫是拍摄 它，如果他实际上讲学，
但它的将是可用 在线为你们访问。
因此，只要确保你能开一个 小时某处在秋天休息
所以你们可以赶上 上的演讲。
是吗？
>> 听众：是的。
抱歉。
我这里couple--
>> ANDI彭：不用担心。
在这里，需要一些糖果。
>> 听众：嘿，我抓住了这一点。
因此，只要回顾一下，不是明天，但 之后周三，我们有一个小测验。
ANDI彭：正确。
听众：而且它会be-- 什么是问答的格式？
ANDI彭：哦。
因此，我们将发送一封电子邮件， 涵盖了深入的一切了。
但是，实际上，它只是覆盖 已经涵盖了基本内容
在第一学期的一半。
我们必须审查会议和问题 和答案所以不用担心这一点。
但是，我们会去了这一点。
听众：是否将是，我们 把我们的电脑和代码那里 -
ANDI彭：没有。
这将是你们写 并回答用手问题。
>> 听众：哦。
>> ANDI彭：所以我们会给 从实践和东西
所以你们可能想也许去 回重写马里奥的手刚
要确保你们有 如何做到这一点的想法。
因为有时当 您手工编写您
忘了分号和东西 那是非常糟糕的。
听众：那不[听不清]？
就像，你要 在your--分号
>> ANDI彭：是的，没有。
我们将讨论更深入 关于如何测验布局
以及我们如何打算档次。
但实际上，只知道 一般格式将是你
人要么解释代码 - 回答的基本问题。
如果我问你，什么是库？
你们应该知道什么是 图书馆不和写下来。
或者，我可以说，编写一个程序， 打印Hello World到屏幕上。
你们会写，INT主要 无效的printf的Hello World分号。
是啊。
>> 听众：所以它不会 到任何地方[听不清]
问题的难易度来确定？
>> ANDI彭：没有。
第
我们won't--耶。
写的全部 比赛15在20分钟内走了。
没有，它不会是。
第
听众：OK。
所以这是星期三。
在那一周，我们还 已在最困难的问题设置？
ANDI彭：没有。
所以，问题设置到期 秋天休息的前一天。
该schedule--电子邮件 实际上发出
11分钟前就了这一切。
所以，你们只是检查你的电子邮件。
它会在那里。
是啊。
别担心。
酷。
>> 对于任何常规问题 公告显示，分级，测验，
之前，我们深入到 指针这将消耗
我们的大多数时间段今天？
酷。
好吧。
因此，没有你们都看这个lovely-- 我不知道他们所说的。
事情那里的粘土动画 自爆本身，因为它
没有正确使用指针。
那么，你的程序将 可能打击本身，如果你
不使用指针正常以及。
因此，我们要作 确保不会发生。
>> 今天我们要 做一些指针乐趣。
我会走过去的事情 那样顺利，因为我认为
有可能在一个小的时间框架。
但是，以支付只是这么多 我真的希望你们，
如果你不明白的东西， 不只是让我继续下去。
因为如果你不这样做 明白了点什么，
你可能不会 弄懂之后，我说。
所以，请阻止我，并问一个问题。
因为它都挺 的雪球在一起。
像，三分球领先进入 内存领先进入其他的事情。
所以，如果你不明白三分球， 阻止我，我们会弄明白
生活也会被罚款。
>> 酷。
那么有多少你们的讲座， 当大卫提到的三分球，
那种你的大脑变成果冻？
是啊。
好。
我们将尝试 脱果冻你的大脑今天。
我们要真正系统 经过究竟一个指针，
它做什么，以及我们如何使用它们。
>> 因此，所有pointers--所以 通常与变量
我们一直在使用的编码，如 变量，如整数或字符串
或浮筒，他们都基本上 分配给它们的值
以及一个地址 指向该值。
所以我现在要得出这样的权利。
我们几乎没有粉笔，但没关系。
>> 因此，例如，通常 我们已经一路
在使用变量是我们创造的 int类型的变量的名字，让我们
说啊。
所以在这里我们有INT x和我们 初始化的int值50。
因此，这里的内存这一块我们 电脑，我们已经存储了号码为50。
那么，三分球开始发挥作用是 您的计算机itself--一样，在这里，
在物理硬盘驱动器 在我的computer--的RAM中
它不仅具有存储有限数量。
你不能只让存储的东西 上面的东西对事物的顶部
并让他们所有。
>> 所以这样我们动态地分配 存储器能够存储我们想要的
并对其进行访问，是由具有指针。
所以，想象一下在你的记忆空间，正确的。
如果是这样的RAM您 计算机，你有这些小位
或嵌段或存储器以字节 which--这些都只是小
已经分配出去的块 硬盘驱动器您的计算机或RAM，
并在每个区块的 你可以存储不同的东西。
因此，例如，1 阵列在本实施例
这里是一个字节是 由8比特组成。
数的变化取决于在 您的计算机的操作系统。
例如，你们有多少人有 听说32位与64位操作系统
系统？
没错。
>> 因此，所有这说 是，memory--
的方式，你的电脑 管理存储器是不同的。
这就是为什么它是真的 重要的是了解
为什么内存本身的功能，而 不是讲究数量。
所以，我们真的不关心 怎么这大阵
是，我们只需要关心 有多大我们需要一个int是，
有多大我们需要一个字符串 是，多大是一个指针？
好。
因此，这将是一个很大 沉重的，密集的信息。
我想给你们一个 夫妇漫画救济的时刻在这里。
你们应该都可以 现在明白这一点。
因为我们知道， 指针地址，
而这些都是由不同的变量。
好。
酷。
CS笑话是最好的，是吗？
>> 所以，我们走的路 有关创建一个指针
语法是一个非常特定的排序。
与创建任何 变量的类型，它的
将是一个特定 语法我们用它来创建它。
因此声明的任何指针时， 指针只是essentially--
我认为重要的 指针的一部分，是
而这一个变量 两者的值和地址，
一个指针是一个地址。
它的值是一个地址。
所以这是存储地址 在不同的地址。
如果让任何意义。
我们一起去了这个更详细， 但是这是一般形式
的如何一个打印机存储why--。
>> 这样就创建一个指针方式 是通过执行数据的任何类型
该指针是要 要引用和then--
与star--，然后 指针的名称。
所以在这里，如果我们想 创建一个指针
指出朝向的整数，且我们 想为x指示器的名称，
我们会做INT明星的X.
是吗？
>> 听众：所以，如果 下面这行你
做INT X，将整型明星x 指示x的位置
你定义之后？
>> ANDI彭：非常好的问题。
我们一起去了这 一对夫妇后滑动。
是啊。
然后同样的事 char和同样的事情浮动。
要知道，在这一点 我们创建了一个指针，
我们还没有实际设置 它又等于什么。
我们还没有实际引用它。
这里的时候，同样的事情 您创建一个变量，
您创建的变量的名称， 你有没有实际设置一个值给它。
这里同样的事情。
>> 好。
那么，我们如何设置值指针？
它是通过引用和间接引用。
这样的方式，我们可以参考 一个varia--的指针，在本质上
我们返回的地址在存储器 其中的变量被存储。
所以，如果我有一个pointer--我就画 这一次，我们到下一个幻灯片，
但只知道，从本质上讲， 在和 - 与号
和变量 - 所有 所做的就是告诉你地址
那里的东西存储。
而且提领则相反 这一点，这仅仅是个明星。
星只是给你的实际 存储在该地址数据。
>> 因此，人们给你的地址 存储在地址，
另外给你的实际 值存储在该地址。
所以他们两个给 你不同的东西。
再次，所述幻灯片 所有在线让您无后顾之忧
如果你们不能复制 下来的时候。
>> 因此，让我们一起来看看 在这里这个例子。
所以，我们已经有了一个巨大的 这里存储阵列，对不对？
我们在那里只是有块 存储器，或字节的内存，
我们可以在其中存储不同的事情。
远的不说，这些都是 地址点在存储器中。
所以，任何时候你有 - 看到0X， 所有这一切都告诉你的是，
这是一个十六进制数字。
正如你们都知道，数字 可以设在不同的基地。
基10是我们一般 解读数字。
还有基体2，它是二进制的。
在这种情况下， 十六进制的基数为16。
它是说只是以不同的方式 从零到10--或零到九
然后又A，B，C，D，E，F。 还引用不同的号码。
大卫就在这个演讲中简要地。
如果你们是 困惑，它只是谷歌。
这里真的很容易的方法来学习 什么是十六进制数字的。
所有这一切真的有关 现在是为你
你们要知道， 十六进制在C中位数
告诉你 - 通常 告诉你，这是一个指针。
或者说是一个地址。
>> 因此，在这里本例中为int x等于5。
我们正在创建一个integer-- 类型对不起，可变
整数，我们正在对其进行初始化为5。
所以在这里我们的内存板，我们可以 看到x是在为0x0地址
并且，你已经价值 里面存放的是5。
这应该是有意义 每个人，对不对？
好。
>> 然后我们做了什么 在代码的第二线
是，我们已经创建 int类型的指针。
这就是整型 明星指针在做什么。
而且等于该符号x 是给你的东西的地址。
因此x的在地址 本例中为0x0。
并使得地址正在被 存储在该指针。
这是否有意义给大家？
>> 因此，认为this--的 想pointers--这里
在耶鲁大学，我们有一个邮政信箱系统 其中，每个学生都有一个邮件
地址，你可以去 进入LW地下室
你可以随便去抢 无论你需要从该地址。
同样的事情发生 这里在计算机中。
你有这些内存字节 你可以信息存储到，
但为了要知道哪些 的信息片
你正在试图找到匹配起来 何地，你需要一个指针
告诉你如何去那里。
>> 因此，例如，对我来说，我的宝箱， 我有一个特定的五位数字。
这是我的地址。
所以，我可以实际去记忆， 我可以看这个地址，
我可以去那邮政信箱 并访问内部数据。
这是否有意义给大家 您的计算机基本上是
做同样的事情。
>> 因此，所有的指针做的是， 它只是创建一个存储
和它的内存中的数据实际上是 别的东西的地址。
然后，你可以去发现。
每个人都好？
大家好我这么远吗？
好。
酷。
好吧。
因此，几乎同样的事情和以前一样。
因此，我们有，首先，可变 名为x其中case--
我将这个值更改为5。
远的不说地址 这在内存为0x0。
00。
太好了。
>> 那么，在我们的第二个 代码行，我们
要创建一个指针 所谓PTR指针。
与该地址，让我们 只是说这是在内存中为0x01。
而我们其实想 store--的符号
X允许你一个什么样x为地址。
和x的地址为0×00。
所以这个指针现在 实际上有地址
存储作为什么十获得其值。
每个人都和我这么远吗？
酷。
>> 然后，该方式 我们会复制，
是，如果我们将宣布和初始化 int类型内存的另一个块。
对？
这将是一个int。
它会被称为副本。
而你要get--所以 明星指针给你
从该地址的实际数据。
该符号给你的地址， 明星给你的数据。
所以数据在指针。
这个指针指向5。
因此该功能 这里 - 明星pointer--
云，获得无论是在 该块和在这里的商店。
每个人都清楚如何发生的？
>> 因此，两家运营商的权利那里 - 连字符和star--
只是做不同的事情 在指针使用时。
一个可以让你的地址一 让你的实际值。
所以一定要确保当你家伙 编码您不要将两者混为一谈
因为他们是完全不同的。
在这里，我们有一个为0x01的一个很好的例子。
这是一个非常好的 少量的记忆。
在您的实际计算机 你将有
一个巨大的屁股数量那是后话 这不是很好的，不愉快的。
这将是一些垃圾的价值。
所以它要真的， 真的会打乱你的计划。
这是非常重要的 现在，我们有
基本面下来why--一样， 什么实际发生时，
你正在运行这些代码块。
Everyone--是吗？
>> 听众：所以INT x等于INT副本？
>> ANDI彭：没有，因为在这种情况下，INT x-- x--的值等于5，对不对？
然后INT副本等于5。
所以，如果你将它们等同于 对方，因为他们是整数，
是的，他们会评估为true。
但是如果他们在存储器串，像 一个大卫例如在做，
这是不同的，因为 他们引用
在内存场所地址 他们将相当于为false。
>> 所以，在这里，因为你是这将是真实的 直接比较values​​-- integers--
但在其他你 参考点。
因为一个字符串是在一个阵列，并 all--我们将谈论这个later--
但阵列本质上只是一个 指针一堆内存中字符的。
因此，这些都是有点不同。
但在这种情况下，是的， 你能做到这一点。
>> 听众：你能解释一下 副本的地址？
ANDI彭：是的。
所以这是just--我 没有填写值
但它只是一些随机其他 垃圾的价值，我们不关心。
因为一旦你开始计划 你知道，我们实际上并不
真正关心什么 实际地址，
我们只需要知道 什么是在地址。
是啊。
>> 听众：为int的下一个明星 第二条线，那是不同的than--
ANDI彭：是的。
听众：--the取消引用 并引用明星？
ANDI彭：是的。
因此C--的作者谁 决定写的语言C--
是不是很聪明。
他们不是很聪明的尝试 弄清楚为什么我们应该这样做。
如果是我，我肯定会 使用两个不同的字符。
但他们决定使用同一个。
>> 因此，一个int后的明星， 它告诉计算机
你是要创建一个指针。
但是，如果你想提领 something--换句话说，
去的地址和拉 从somewhere--数据
明星用不同。
所以，你俩要小心 没有搞乱的两种用法。
酷。
是吗？
>> 听众：所以只是重复到 确保我following--
>> ANDI彭：完全罚款。
>> 听众：--in的左手侧 该幻灯片，我们这样做，我们知道的事情。
我们宣布一个整数 [听不清]是等于5。
ANDI彭：是的。
听众：对。
然后我们有一个int明星的事情， 上面写着那种，OK，像我们
声明一个整数，现在 我们宣布一个指针。
ANDI彭：正确。
正确的。
>> 听众：是吗？
而我们的指针PTR。
>> ANDI彭：是的。
指针的名称是PTR。
指针。
听众：然后它 等于NX，只是告诉C
它希望访问的值 x--值的整数x整数
被分配。
>> ANDI彭：小心 因为符号实际上x
告诉你 - 电脑，你 想拉什么x是地址。
因此，符号给你 地址，星级为您提供的价值。
>> 听众：所以我们想要的地址。
比方说，x为at--
ANDI鹏：实际上我们 知道什么x是吧？
因为我们知道X was--我 使这件事，但我们只能说，
随意，这是为0x00。
对？
所以我们知道地址为0x00， 所以当我们去和符号X，
我们知道这 应该评估为0x00。
这就是为什么我们存储的 作为我们的指针的值。
那有意义吗？
>> 听众：是的。
而副本去提领ptr--
ANDI彭：对。
听众：可呈现为 我们已经指针
声明告诉我们 整数x的地址。
>> ANDI彭：是的。
>> 听众：而在这 一种情况下，星ptr导
等于x的哪个等于5的值。
>> ANDI彭：正确。
>> 听众：酷。
这是一个简单的方法来获得 即或是唯一方式 -
ANDI彭：所以现在它 似乎不是很合乎逻辑的我们
花这一切时间做 这个超级复杂的事情时，
我们所做的只是创建两个 与5的值的整数，对不对？
它没有意义。
但是，一旦我们就去了 内存分配还有 - 我们将
走了过来，为什么这可能是 方便和有用以后。
相信我，当我说我们不只是 为您创造这些任意函数
你们学习，因为我们是 想惹你。
有实际使用所有这些 的事情，我们会谈论他们。
>> 听众：真棒。
>> ANDI彭：是的。
>> 听众：[听不清]。
>> ANDI彭：这个问题问得好。
>> 听众：[听不清]。
>> ANDI彭：这不是。
这真的不是。
听众：--two变量 这也等于[听不清]。
好。
>> ANDI彭：是的。
好。
在我继续前进，是每个人都清楚了吗？
我知道泰勒，你有点晚了。
好的。
这是在网上。
你看前20 分钟，你就会被大家看好。
好。
酷。
>> 好吧。
样的，所以这是一个基本上 类似的事情，我们只是做了。
它只是在图形形式。
如果你要跟踪什么 就这样发生了，诠释x等于5，
我们所做的在这一点上是 创建一个名为x int类型的变量。
我们要保存 的这5内在价值。
有没有指针，因为我们还没有 实际上创造了一个指针呢，对吧？
然后在下一 行，诠释明星指针，
这就是我们实际上 实际创建的指针
我们正在制定的 等于，或引用
指针，以符号的X.
这是哪里的地方在 记忆这事是。
我其实并没有理会 组成一个值这个时候。
但在这种情况下，该点 您会等于。
>> 再往下还有，明星 指针反引用。
这就是我们 拉动信息。
所以当x是值实际上是 将是等于35。
所以在这一点上，我们基本上已经 只是重新初始化X要35
没有实际接触的X.
只需通过指针 这是指向X，
我们其实可以改变什么x为。
我要画这一点为好。
>> 所以在这里，我们已经创建 这里是一些随机地址。
远的不说，又为0x00。
让我们只说这是地址。
我们已经创建了一个整数名为x 我已经分配给它的值是5。
在第二行，整数 pointer--所以现在我们已经
得到这个第二件事 这里被称为pointer--
我们打​​算用于：我们只能说 它的一些其他随机的内存地址。
>> 所以，我们要设置这个 等于不管是什么样。
与该指针是要 指向x的值
然后，如果改变 the--如果我们做明星的指针，
这是怎么回事的 我们指针的值。
在这种情况下，它的将跟踪 这支箭过来x的这个值
而这将其更改为35。
实际上，我们只是改变 X =无接触的X.
通过刚才引用指针， 我们可以去改变x的值。
那有意义吗？
>> 因此以这种方式，我们实际上可以重新命名 和重新改变并重新分配值
以我们没有的东西 实际上使我们自己。
这是否有意义给大家？
酷。
好。
因此，复杂的图形在这里。
通过走行线。
从本质上讲，只是做的确切 同样的事情，我只是做了。
在我继续前进，我 真的想只是让
确保每个人都对这个真的清楚。
所以在这里，我们有代码 INT a等于3，B等于4，c等于5。
因此，我们已经创建了一个名为三个整数 a，b和c表示等于3,4和5。
然后，我们创建三个指针 这一点每一个这些变量。
>> 现在我们要去 走在本质
当你对他们的工作会发生什么。
所以画出来。
取paper--我做不成片 知道你们都有纸张，
但那些你们谁不这样做，也许 那些你们谁借钱。
取的纸张 并线走线。
而在你做的每一个操作， 我希望你们真正写出来
什么是，b和c在此点。
什么是地址，什么是 指向a，b和c中的指针
在此刻？
>> 然后希望这 那种会加强你们
通过如何看待指针。
我们不会去 通过所有这些。
也许我给你five-- 像，三分钟。
获得第几开始。
呵呵。
哎呀。
>> 听众：在第二行，为什么 是不是明星[听不清]变量？
>> ANDI彭：记得在 运营商，在第一周，
我们谈到了如何 如果你这样做等于加，
这只是意味着一个等于加C。
在此case--所以这是另一 方式在其中星也可以使用。
除了参考 并声明指针，
请记住，这也 意味着乘法。
因此，在这种情况下，刚刚 是等于C时代。
这只是不同 编写方式。
>> 听众：一等于C时代。
ANDI彭：是的。
>> 听众：这是什么意思，如果 它说，一个符号的信？
>> ANDI彭：＆符号的手段 你要that--你
要指针的地方 指向和拉动的地址。
因此，符号给你的地址， 明星给你那里的实际值。
>> 听众：难道我们 通过线建设上线？
>> ANDI彭：你 通过线的基础上线。
所以只是去一行 一时间和then--你
不必担心 完成整个事情。
让我们试着打通 也许二，三线
然后，我们将召集和完成这一点。
>> 这是完全确定的，如果你们都将丢失。
这是一个很艰难的概念。
如果你们是担心类 是这样的像大卫说，
它没有。
我们到达 困难的概念性高峰
然后它会 向下倾斜。
所以你们几乎没有。
我们有很多的糖果来获得 你们通过驼峰。
我认为倒台后几乎 打破我们会渡过了难关
和生活都会好起来。
所以不用担心的。
好吧。
我给你们20 多秒的收官。
好。
好吧。
让我们一捅这个。
正如你们给我的答案， 我只是要他们输入。
并希望we--可以吗？
我其实不能输入。
我就画在黑板上。
>> 因此，这里的这个第一线 我们有一个等于B型星温度。
此外艾略特提出了一个 真的，真的好点。
因为我忘了，除了 两种方法，我们可以使用星号，
这事实上是在第三条道路。
乘法。
所以，只是没有得到困惑，因为 这是利用明星的第一种方式。
它只是告诉电脑 我是要创建一个指针。
>> 通过做第二种方法 Star的指针，
告诉你想要的指针 在该指针来访问该数据。
然后，当然，还有 只是简单的乘法
两个数字之间，告诉你 我想乘两个。
因此，有很多的方法 我们可以使用星号。
不要混淆。
只要确保你们理解 正是他们三个
是做。
>> 因此，在这个第一线， a等于b乘以℃。
所以，让我们通过什么 是，什么是B，什么是C？
什么是一个指针时， 指针为b，并且指针到c？
那些是什么都等于？
好。
>> 因此，我们开始了与一个等于3， b等于c 4，和C等于5，对不对？
所以这第一行之后，就可以 有人告诉我，什么是？
是啊。
随意刚喊出答案。
20。
好。
什么是B'
>> 听众：4。
ANDI彭：什么是C吗？
听众：5。
ANDI彭：耶。
好。
什么是PA，PB和PC？
>> 听众：000001和002？
ANDI彭：是的。
这么样的脑筋急转弯 但不是真的，因为在这里我
抽出实际的回忆。
但是，因为对于一个例子，我们不 其实知道这些数字是，
我们只能说符号。
我甚至不知道我是否 可以得出一个符号。
这是like--你怎么办呢？
>> 听众：喜欢画画八。
>> ANDI彭：像八。
像那样。
好。
听众：宾果。
>> ANDI彭：杀死它。
所以AMPERSAND一个，你可以做到这一点。
因为我们实际上并不 关心的是，值
是，这是一些长 屁股价值反正，
我们只用榕 说一个符号。
那么什么是PB？
听众：[听不清]。
ANDI彭：是的。
酷。
好吧。
先易行。
我们得到了这一点。
指针很容易。
好的。
>> 第二道防线。
所以明星等于是一样的 话说一件事等于C时代。
这是写的只是一个更简单的方法。
因此，我们不试图使 一个点或任何东西。
因此，与第一线完成。
什么是在第二行上 以后你做了等于C时代？
>> 听众：100？
ANDI彭：这是100。
好。
如何关于B？
>> 听众：[听不清]。
>> ANDI彭：如何C吗？
>> 听众：[听不清]。
>> ANDI彭：又有怎样的指针？
是否they--一样的，对不对？
好。
现在，第三行。
有点麻烦。
b等于c星PA。
谁能告诉我，第一， 哪些呢星级PA平等吗？
>> 听众：这是值 一个储存在。
ANDI鹏：没错。
什么是价值 一个储存在？
>> 听众：100。
>> ANDI彭：OK。
那么，什么会是一个后 执行该行代码？
>> 听众：[听不清]。
>> ANDI彭：什么关于B？
>> 听众：100。
>> ANDI彭：是的。
然后一切是 几乎不变的，对不对？
因为我们没有触及它。
酷。
第四行。
稍微复杂一些。
所以pc--再次，PC是指针 这指出C--等于年利率。
什么是？
>> 听众：100。
ANDI彭：什么为b？
听众：100。
ANDI彭：什么是C？
听众：5。
ANDI彭：什么是PA？
听众：与符号一个。
ANDI彭：PB？
听众：与号湾
ANDI彭：和棘手的，什么是电脑吗？
听众：与符号一个。
ANDI彭：耶。
宇豪。
你们看到了吗？
这是所有的权利。
这不是太糟糕了。
我们有更多的糖果，如果这还不是全部 正确的，但我认为它的一切权利。
我们打​​算走过去只有一个 之前，我们就越难打的人多。
这些问题的答案我在这里。
>> 从本质上讲，知道这是 就像数学在这一点上。
当你有简单的公式像 再加上B，A C时代，这是很容易做到。
当你开始扩大后， 它，只是为了去操作的。
同样的事情了。
>> 保持跟踪，如果你的 明星是什么了。
这告诉你的价值。
如果你有一个和之前 东西，它会告诉你地址。
你应该分配任 的指针或该值。
所以，让我们在这个 最后一个真正的快。
这不是最后一个，对不起。
其实，你们可以挑选。
哪一个做你们想要去 过出剩余的三个的
我们有吗？
我不认为我们可以做的 因为我们不能只是跳转到该行。
好。
你们没有选择， 这仅仅是三分之一到最后一个。
>> 星PC等于b乘以℃。
>> 听众：星PB？
>> 听众：星PB。
ANDI彭：对不起？
听众：星PB。
ANDI彭：星PB。
哦，我的坏。
星PB等于b乘以℃。
我想给你们10秒。
只是很快的想法。
这是我们有这么 到目前为止，什么后，我们发生
执行该第五行权呢？
好。
什么是？
>> 听众：100。
>> ANDI彭：100。
什么为b呢？
>> 听众：500。
>> ANDI鹏：好的。
是否有人想解释 对我来说这是为什么500？
我不觉得我们 实际上碰过湾
我们是怎么改 的B不接触B值？
是吗？
>> 听众：因为星PB 是指在pb--价值
ANDI鹏：没错。
听众：可呈现为b。
ANDI鹏：没错。
所以在这里我们的图中，我们的指针 PB实际上是指向这一权利
在这里，这是实际的物理湾
所以，如果你去 你做明星PB，这是
下面您将鼠标指针箭头 和物理上改变b的值。
所以这就是为什么我们B改变为 500没有实际接触湾
然后一切依旧 同样的，因为我们没有触及这一点。
这是湾
酷。
接着 -
>> 观众：我只是有一个问题。
>> ANDI彭：是吗？
>> 听众：因为we've-- 不再有符号C，
这是否意味着一个符号 重定向到现在同样的事情？
>> ANDI彭：是的。
So--
听众：所以箭头 那种只是移动和 -
ANDI彭：所以essentially--
听众：--now我们不能access--
ANDI彭： - 当我们 提领Çon--我伪造。
那是什么？
第三行？
四。
第四行。
所有我们所做的是，从本质上讲， 改变这种箭头
并将它指向了一个来代替。
>> 听众：所以我们不能访问Ç了。
>> ANDI彭：如果你有这个确切 号码，你可以访问它。
但不是。
我们没有一个指针 指向Ç了。
我认为，如果你想 再次访问它，你
将创建另一个 指针重新指向到c
或提领这一点，并指出回来。
所以，不，截至目前，三 三分球，他们没有指向C。
>> 每个人都好？
答案是否在线。
随意，节后，去了 过去两年和测试自己。
同样的概念，只是一个 有点棘手。
通过对逻辑只要按照 为什么事情是不同的东西。
并且暗示，指针 我们爱的话题
对测验覆盖，因为他们 概念上非常具有挑战性。
因此，我建议你 家伙都评论此图
或斜线类似概念 这是你的测验之前下周。
>> 听众：对不起。
>> ANDI彭：是吗？
听众：[听不清] 最后埃德蒙顿[听不清]。
>> ANDI彭：50,000？
我需要遵循它背下来。
但somewhere--我觉得行 之前，你创造巨大的c值。
c等于这个巨大的东西 也就是100倍500。
第
>> 听众：[听不清]。
>> ANDI彭：是的。
100乘以100是10,000。
这是10,000。
所以背下来有你 乘b和c。
使得指向b--指针 这是500--倍的值A--
>> 听众：[听不清]。
ANDI彭：也许这是错误的。
听众：不，不，不是这样的。 [听不清] 指针位于c现在指向A--
ANDI彭：是的。
他是对的。
>> 听众：--IT是其在平等 一个times--这是c的值。
ANDI彭：你能说一点点 位高​​涨所以每个人都可以听到你？
听众：所以指针C现在点 到什么用的一个指针指向
用于：仍然does--，但它们指向 同样的事情，这是一个，对不对？
值的，但是 它被重新定义。
而在那开始你 说一个是以前的100倍
在B的值是500。
所以这就是不过多是。
50,000。
他们你重新分配，要什么 在C内存空间is--指针位于c
指向其是。
所以你重新定义为50,000。
ANDI彭：她能 教节对我来说。
下一次，这一切都属于你。
这里。
下面是更多的糖果。
你应该得到糖果的。
>> 听众：我几乎赶上了。
>> ANDI彭：你几乎赶上了。
没关系。
是啊。
但她是完全正确的。
所以，你必须做的事 是that--我想我们
必须遵循的事实 该指针是现在
指向不同的值。
所以value--很抱歉， 的C指针重新瞄准到。
而且使转向我们所有的数字。
这就是为什么，当你访问 值存放在那里，这是不同的。
那有意义吗？
好。
酷。
大家好，我才继续前进？
>> 听众：请问the--时，你会 向下在左侧列中的行，
并在第一行影响第二次排 然后second--等，它们也all--
ANDI彭：是的。
所以，想象这就是我刚才输入的代码 在一个等于b乘以C，明星等于C。
试想一下，我已经 只是跑这个代码
我没有打印出什么 所有这些事情。
如果我只是打印第一 在上面的东西，它会在这里。
如果以后我跑了所有的 这些代码行，
这些值的应 是在末端是。
>> 所以，其实我已经写了一个程序在这里。
我没有做过的所有的 乘法。
但就可想而知了。
所以在这里我只是有一个 程序调用指针。
我会，如果你guys--确定进行放大。
所以，我创建变量a，b和c。
我已经将它们等于 3，4和5，我已经
创建了相应的指针。
然后，在这里我只是去 打印出那是什么。
因此，让我跑了。
>> 难道你们see--废话。
难道你们看如何， b和c是那些值
但他们的指针是这个巨人 垃圾的价值，我们不关心？
所以，如果我是真正堵塞 在所有的乘法
然后重新打印所有的 这一点，将执行了
到位于底部什么。
所以，如果你们想要玩 与实际的物理编码，
你们只需插上所有的。
该代码将在网上，然后你 值应打印到这事后。
>> 然后你会看到如何指针 地址实际上重新分配。
所以，你会怎么看 的C地址实际上变成
等于什么的地址了。
他们会匹配任何 这大量的。
好问题。
大家都没事吧？
最后一个电话的问题。
好。
好吧。
所以准备让你的心 吹稍微多一点。
数组实际上只是指针。
这就是它们。
请记住，什么是字符串？
他们还数组。
那么，什么是字符串真的吗？
他们就像指针到 开始更多的字符一个字符的。
>> 所以，这只是概念开始 建立在彼此的顶部。
所以这是why--您 记得在讲座中，大卫，
当他有这样的比较 对INT字符串妈妈
是什么，然后 另一个字符串妈妈和你
尽量等同两人给对方， 他们给你不同的价值观。
这是因为字符串 本身不值。
所有却已是内存地址char-- 他们是字符和数组的数组
只是指针。
>> 因此，在本质上，当 大卫comparing--
那是正确的，如果我抹去这一切？
所以在讲课时，大卫· 有妈等于等于妈，
我们这似乎是同一件事。
对？
但是，在下面的计算机 油烟机，实际发生的事情
的是，这串， 所有这些都是是一个数组。
随着ampersand--或者，对不起， 使用空终止底。
对？
反斜杠0。
错误的反斜杠。
>> 因此，所有这些were--所有 这两个字符串were--
是四肢大小的数组 妈妈和妈妈的信。
但阵列真的只是 指针在存储器中的特定位置
告诉你开始你的阵列。
所以在这种情况下，这一切是 只是一些垃圾的价值，
一些随机指针。
而这一切都被 其他一些垃圾的价值。
远的不说为0x200。
>> 所以，当您尝试平等 它们两彼此
他们评估为false，因为 在addresses--指针
它们were--是不同的。
虽然它是不同的，如果你 试图比较实际的整数。
就像如果你想compare-- 在最后example-- INT a到b，
他们将评估 要真正为艾略特说
因为他们是 被存储在该整数
和你正在评估只值。
在这里，因为字符串数组 和所有的数组的指针，
这就是为什么他们不 彼此相等。
>> 所以，那种混乱的，该图形。
但是，让我们想像。
我们已经创建大小的数组 3从0索引到2-- 0，
1，2为1的值， 2，和3存储在其中。
所有的阵列真 does--在这里，我们只
说我创造一个指针 该阵列是
访问的值 该数组的第一个索引。
所以在这里这将是0。
对？
大家是否明白如何 即第一行评估？
太好了。
>> 所以，如果你想进行初始化 在那之后的附加价值，
所有我们正在做的是重新分配。
所以0，1，2，1。
所以这个指针，曾经 指着在这里，我们所做的
正在向下移动。
这就是加1在做什么。
然后我们就可以把2中。
如果我们希望把3一 之后，我们会删除该指针，
把3在那里。
这是否有意义每个人？
是啊。
你有问题吗？
听众：这是[听不清]有 一个问题，我反正说了吧。
我不认为它实际上是一个 但是 - 在英语的问题，阵列
等于1是有道理的。
我们想，好，第一件事情。
但事情0指数 [听不清]数组等于0
以指示第一点。
ANDI彭：是的。
所以，其实我在做什么在这里 我没有访问的第一个索引。
所有我doing--所以首先， 告诉我是什么星阵呢？
什么是一个指针之前，一个明星吗？
>> 听众：它表示一个指针。
那你声明的指针。
它de--
>> ANDI彭：它解引用此装置 它会与实际获取的价值。
对？
所以在这种情况下，要得到 这里，并设置为1的值。
是吗？
所以我不actually--我不 真正关心的这个指标，
我做的仅仅是迭代下降 通过移动指针我向下排列。
然后最终我 要阻止它，对吗？
而且我停止方式 是我击球的时候，在案件
一个字符串，一个空终止的。
我知道，哦，如果我打一个back--如果我看到 反斜线0，我知道我做过这个
我知道我可以只 停止迭代通过。
非常好的问题。
>> 我们真的会走的更远 在深入这个下周
因为一块，那将 涉及到很多指针的使用。
但只知道，现在， 这只是一个不同的缓慢 -
这只是一种不同的方式进行 电脑写，从本质上讲，
我们一直在做的。
就像大卫说 讲课的样子，我们
访问数组只是做 阵列0，托架0，如果我们只是
想访问的第一个值。
>> 所有计算机的工作正在转向 那成和迭代本身。
因此，我们把它叫做句法 糖这只是
的话说用户友好的一个奇特的方式 我们如何知道如何编程。
但是电脑 下面，它在做什么，
它实际上只是有 指针多数民众赞成调整。
但是，我们写的方式， 因为它更容易为我们
考虑事情的角度 盒和如何移动向下拖曳，
是由具有括号。
对不起，这是真的， 真正但是 - 不好呀。
听众：那么，如何会 你比较两个字符串
看它们是否彼此相等的？
>> ANDI彭：大卫写道： 这一计划讲座
所以我只是要去 在快速并简单。
你会做这件​​事的方法 是，你实际上会
需要去比较 addresses--或值
从指针获得。
所以请记住，你怎么了 这里获得的价值？
我不关心地址在这里。
我如何真正得到的 任何的价值在这里？
>> 听众：[听不清]。
>> ANDI鹏：没错。
所以，你比较的明星 这里与这里的明星。
那些是相等的。
然后你去。
是这里的明星， 明星在这里一样的吗？
好。
他们是平等的。
而你只是保持下去 直到你击中双方的结束。
如果所有的人都是平等的，那么 你知道你的字符串是相等的。
与C实际上有一个 功能书面叫
字符串比较这其实只是 这是否给你，让你不“
要自己写。
是吗？
>> 听众：我想在讲座 当我们做了比较。
我们并不真正需要一个 如pi柜台，对不对？
>> ANDI彭：你不 因为我们真的不关心
我们已经多少盒通过迭代。
我们所关心的是，我们要 继续下去，直到我知道停下来。
你知道停止的时候 有某种指示
你是在一个空终止。
是啊。
So--
听众：[听不清]。
ANDI彭：是的。
因此，在比较的情况下 串，我真的不
关心多少个字母 are--我需要比较
如果他们是真的还是假的，如果 它们彼此相等。
我不在乎多少个字母 在他们每个人的，对吧？
我只关心这个 与此和所述一个匹配
火柴和之后的一个接 比赛一路上扬，直到结束。
对？
那有意义吗？
>> 所以，我真的不关心有多少信件， 我只关心，所有的字母
匹配。
是啊。
好。
我可以从这个感动吗？
太好了。
我们正在运行有点短上 时间，所以我将只允许你
球员简要回顾一下这个。
运行到你的ID，如果 你们是好奇。
而且你们可以看到什么 这将被打印出。
好。
>> 所以的东西，我们也将触及一个 位指针运算的想法。
其中，所有的都好，就是 而不是调整
的所存储的值 在您的指针的地址，
它只是实际改变 地址本身。
所以，如果你作为人的通缉 手动调整指针，
你会做到这一点的方法就是 做指针的n倍的大小。
对？
>> 因此，一个int。
一个int--多少字节 在内存中是一个int？
这是四，对不对？
所以，如果我知道，我把所有的数组 整数，我希望它指向一个
后来，我知道，我只是要 移动我的指针下四个字节，对不对？
因此n次的大小 的指针字节
然而，多少字节，你只是 要通过移动鼠标指针向下。
>> 因此，例如，如果我们有一个数组 整数，第一个，我们只能说，
被存储为0x00。
你知道下一次将是在 0×04，因为这四个字节后面。
而在这之后的人会 为0x08等等等等。
所以，伙计们，一起来看看。
>> 所有你在这里所做的是 你有一个指针ÿ
而你还说你 内存，让您可以向下移动
的存储器块进行分配。
样的一个更高层次的概念。
你们将不再需要 要知道，本周，
但是这一切都在做那里。
好。
>> 另一个笑话时间。
两串走进一间酒吧。
一个人说，我想一个朗姆酒 可乐垃圾值。
另一个人说，你得原谅 我的朋友，他没有空值终止。
你们得到它。
抱歉。
这就是我如何保持自己 当我预习的节会
是我插入了几个笑话幻灯片。
反正。
好。
之前，我谨on-- 因此，从本质上讲，我们已经
涵盖了所有的概念 有关指针的问题。
然后，我们将talk--移动 更多的，说说为什么这很重要
以及如何装配到 理念的内存管理。
但在此之前我继续前进， 有没有人有问题
关于指针使用，这是怎么回事 当你创建的指针上，
如何引用各 另外，它们是怎样被提领？
有关的任何问题 之前，我继续前进？
好。
太好了。
>> 因此，这给我们带来了这个 较大的更高层次的概念
内存管理的全过程。
因此，基本上，在 您的计算机，有
两种基本类型的存储器或 在其中的存储区域被存储。
您这里有什么所谓 堆和你在这儿
什么叫做堆栈。
而且我们要谈谈 栈首先是因为它是
更finagley一个你 有一种概念
明白这是怎么回事。
>> 因此，所有的堆叠is--想到的 它作为存储器中的物理栈
那就是你有一个内存块 多数民众赞成预留程序
而它的运行。
这是在哪里，基本上，所有的 您的局部变量的存储位置。
所以这只是一个放大 在那一叠照片。
堆栈那里，我 只是放大了一点。
>> 因此，基本上，在堆叠有 在你的程序了一堆功能。
所以，就让我们回去 到本周二的例子
在这里，我们有我们的主要功能 以及一个立方体功能
在这里我们试图建立一个函数， cubed--是把参数作为输入，
立方他们返回 他们回到主。
这样的方式，一个储存在存储器 是，你有你的主要功能
这里在底部。
然后用每个附加功能 您致电，并添加最重要的是，
内存只是堆在上面。
把它看成是一个物理堆叠。
>> 所以，你有在座的各位主要 你的主要函数的变量，
一切是怎么回事，存储。
然后当你打电话 立方体，它会和它
创建的所有副本 参数和它们存储
上面在不同的地方。
所以，我们为什么要在乎？
我们关心的原因是，我们不能只 使用的参数这里 - 变量
这里 - 我们改变它们，我们预计 他们还可以在这里改变了，对不对？
>> 的想法是，他们保存的 在存储器不同的地方
这样一来，当你访问不同 功能，你的想法正在发生的事情
实际上并没有发生，因为 存储器位未互连。
这样一来，问题是真的 重要的是我们那种理解
是，如果，当我们运行 程序，函数的大小
堆栈frame--这样的身体，怎么 多少内存？我们给它？
也许这是一个巨大的功能，所以我们 必须给它那么多的内存。
但如果是小的，我们会 需要一个小点点。
>> 这样的想法是，我们正在运行时 一个程序，函数的大小
取决于多少 变量和变量的类型
我们想给它。
但是，如果数量 variables--及其大小，
多数民众赞成坚决不 通过你的编码器，但
是由实际确定的 用户程序的。
所以，如果我想创建一个函数 这把字符串从用户，
但我真的不知道有多大 这些字符串是，这对我来说很难
以配发的具体 所需的内存量。
对？
>> 因为如果这个function--如果 该用户输入一个巨大的字符串，
它会创建一个错误 什么叫基本
堆栈溢出，你超越 你有内存的边界。
所以，那么我们该怎么办？
如果我们不能创造这个巨人 堆叠，可以节省一切，
我们怎么做才能解决这个问题？
>> 因此，我们要继续前进和谈话 关于此第二类型的存储器
然后我们可以谈论如何 我们可以使用两者结合起来
要解决这个问题。
所以，现在我们要动起来 到的存储器的不同部分
在我们的电脑。
这就是所谓的堆。
因此，所有的堆是一个游泳池 可用内存
可动态分配。
这样，可以改变，同时 你的程序正在运行。
>> 等的区域 未使用的内存，可以
是allowed--，可以是 分配与功能
所谓的malloc或内存分配。
因此，本质上，当 你正在运行的程序，
你可以动态创建的内存 堆和使用，所有到这里。
因此然后，所有的功能 在这里可以访问堆。
>> 所以malloc的，这种想法，大卫· 一种快速，简单地掩盖
在讲座中，仅仅是一种方式， 你控制你的记忆。
就像，当你刚刚创建 堆叠功能，当你刚
让您的主要功能 与您的随机函数，
你认为他们是孩子，仅仅 逃跑的时候，你已经做完了他们。
他们真的坏事儿。
创建它们，你 教给他们的东西，
然后当你想 再次访问他们，他们是
不存在，因为你的 内存刚刚跑掉了。
>> 但malloc或堆，是一种 具有较好的儿童，在那里
一种可以创建 他们，将它们分配值，
使用them--听起来真 bad--使用它们不过你想要的，
但能够控制 他们，然后释放内存
每当你需要他们。
那么，当你和你做 功能，孩子们回来找你
你仍然有数据存在。
>> 因此，我们的malloc，或创建方式， 内存是由函数void明星
malloc的大小以字节为单位。
所以，这只是原型 为什么我们这样做。
因此，一个例子就是我们创建一个指针 类型int-- INT星级pointer--平等
整型malloc的大小。
那么，为什么我们做大小的原因 的，而不是只是一个number--
因为大家都知道， 一个int四个字节，
right--而是一个int是只有四 字节在某些操作系统。
>> 作为这个想法对我们来说 程序员是我们
要创建代码，可以 运行中的所有计算机，而不仅仅是
我们简单的电脑。
所以这就是为什么我们喜欢用 的大小，而不是只数4。
这是否有意义给大家？
因此，大小of--所有它是一个C 函数或运算符
告诉你多少字节的内存呢 某种类型的变量占用。
所以在这种情况下，一个int的尺寸为四。
四个字节。
和malloc是要释放 在你的堆四个字节，
然后你就可以在你的主要用途 功能，以便能够存储存储器。
是每个人都在说清楚这么远吗？
是吗？
>> 听众：我很清楚，但 刚刚结束clear--
ANDI彭：OK。
完全罚款。
听众：--size是[听不清] 实际上可以[听不清]
它会怎么做的 我们希望它的东西。
这不是一些伪代码。
>> ANDI彭：没有。
>> 听众：这就像一个真正件事 -
>> ANDI彭：这是真正的代码。
>> 听众： - 我们可以使用它。
这是实际的。
酷。
ANDI彭：尺寸自带C.
听众：那让我的生活更幸福。
ANDI彭：是的。
所以，如果你是一个懒惰的程序员 有点像我，有时，
我不喜欢记忆 什么尺寸的一个int
是的，我不喜欢记忆 有一个浮动的大小。
只是尺寸告诉你什么 这是，这是一个容易得多。
>> 好吧。
因此，一个重要的事情 那你们都想要
要记住，当你 使用malloc是您永远
必须进行检查，看它是否为空。
所以，就像我说的，回 该照片的堆。
堆就是这个巨人 内存堆栈，你有。
而你要能够把块 从它的内存并使用它，对吗？
>> 但是，如果你没有 在这堆更多的内存？
如果我已经用什么都 它和我尝试对malloc更多？
不存在。
嗯，这就是为什么你 要得到一个错误。
你会赛格故障。你会 有段错误，你
尝试访问的东西都是不存在的。
这样一来，这样我们做 那和方式，我们
防止的是，我们检查 以查看是否指针的空。
>> 所以，如果我是对ma​​lloc的东西 我没有更多的内存，
这将打印，因为一个错误 指针回到你只是空。
这样一来，这样我们做this-- 这下好了设计，
只是记住this--是任何 一次尝试的malloc什么，
你将需要 检查，看它是否是空。
因为每当你尝试 从堆中获取内存，
你总是要做出 确保您有记忆。
这就是它。
>> 因此，相当多这三个 行代码，熟记。
每次你的malloc，扑通一声他们进来。
你会需要它们。
因为我向你保证，我们将 测试你的情况，你的电脑
会爆炸，因为你 要尝试存取存储器的
不存在，事情将要 偶们这不会是好的。
因此，只要钻取到你的大脑。
malloc的，无效。
好。
好吧。
>> 那么这生子; 发生了什么问题
我们正在使用的内存后完成。
因为整个的想法 具有的malloc是
我们有这样的堆，我们可以采取 从内存中，然后我们可以使用它。
对？
然后，我们要记住 在这之后，我们用它做，
那么我们就可以释放它。
让它去吧。
我们可以让他走了。
要不然你也将泄漏 内存和更坏的事情会发生。
>> 从本质上讲，只要 你触摸存储器，
如果不好的事情会发生 不正确地做事情。
所以，你必须检查，首先， 如果您有可用的存储空间。
然后就大功告成了之后，你要 释放它，让你的操作系统
把它收回。
所以我们这样做的方式就是这样 功能，无空隙，指针
以内存堆。
>> 所以这个例子是自由指针。
这是很容易，操作简单， 不要忘记它。
因此，检查，看它是否为null，免费的。
每个人都好？
所以再次，代码，你们 可以种迅速采取了一眼。
我知道这是一个很多新的语法和 它的所有权利，如果你喜欢啊，
这是什么意思了吗？
别担心。
所有这一切都意味着要被显示 一个动作，如何将所有这些东西
可以一起使用。
所以这是放在一起 就像一群过去
幻灯片，我们只是去 通过到一个程序。
听众：在某种程度上 我们可以actually--
ANDI彭：在一个方式， 我们实际上可以使用。
你可以放下了到您的ID， 你可以运行它，它会工作。
听众：OK。
所以这是真的吗？
>> ANDI彭：这是真实的。
是啊。
我尽量做到让 字体是不同的，因此
每当我键入真实的 代码中的字体是字体代码
而我记的代码是不同的，但 我不知道是否实际工作。
听众：第
我觉得 -
>> ANDI彭：OK。
>> 听众：--sometimes [听不清]和我
像，这将是真的很可爱 如果它实际上是一个有用的事
但它不是一个有用的东西。
我想，这是一个有用的事情。
>> ANDI彭：OK。
是啊。
我会通过沿。
要像大卫，孩子真的 伤心的时候你写假的代码。
好吧。
是吗？
>> 听众：所以这里的PTR 实际上不是一个指针，
它的内存块？
>> ANDI彭：所以你在说什么 第一行或一跌吗？
你说的是这个吗？
>> 听众：在PTR是 in--不同的东西
>> ANDI彭：嗯，所以在这里 我所实际doing--，
让我们只经过这里。
这种关系在 所有很好的概念。
所以在这里，我们有INT明星PTR。
所以诠释的指针，这就是 我们实际上创建
一个指针指向一个整数。
那么，它会指向一个整数。
而且我们要malloc或 给它，足够的内存分配
存储的整数。
在这种情况下，这样的四个字节。
>> 然后如果这等于null--平等 等于null--我们要打印。
哦，你因为一个错误 你出的内存，对不对？
否则，返回之一， 这只是告诉你的程序
你已经有了一个错误。
然后，如果你这样做 有记忆，它的
要存储什么让 INT让你进入的位置
并将其设置为指针的值。
因此，它实际上会 从物理上删除该值
并把一切得到int返回。
然后，你要 无论他们进入打印。
>> 听众：这就是 要在堆？
>> ANDI彭：这是怎么回事 将在堆。
>> 听众：所以这 将是可访问。
ANDI鹏：没错。
美观大方。
好。
>> 听众：所以当我们释放PTR在这个 最后一步，我们正在释放指针
或者我们正在释放块？
ANDI彭：是的。
因此，我们正在释放pointer-- 好了，释放的内存块。
所以唯一的办法，我们甚至可以访问 存储器是由具有指针。
如果你没有指针，你 喜欢的哦，我不知道它在哪里，
对？
如果你释放它的话，你基本上 释放了整个街区。
那么你的计算机知道，哦， 没有什么可用的在这里，
我可以把垃圾 值回了一遍。
>> 听众：所以整数确实存在的呢？
>> ANDI彭：不要整数存在吗？
抱歉。
你能否重新表述您的问题吗？
听众：我的意思是，你释放后， 指针，整数，你得到的，
将仍然存在？
>> ANDI彭：不，不会。
或者至少它会存在于你 你的电脑做之前，内存
不管它，但有 没办法让你拿到。
因为你释放的指针。
你不知道它在哪里了。
是啊。
>> 我打算在这里移动。
唷。
因此，我们通过大量的概念的 内存管理困难
我们正要 基本上花
5，十几分钟去 在语法的事情，
将是可用的，并为你们有用， 但没有太概念了那里。
好。
>> 因此，我们这里完全改变齿轮。
内存管理，很难。 指针，很难。是。
这是真的，真的很难。
完全罚款。
这就是为什么你的作品是 将是真的很难。
但是，如果你去做 的事情，我们是
应该做的事情，使 确保一切都为空，
一定要检查，如果事情是 空，一定要释放内存，
确保一切都没有 漏水，你会好。
你将被设置。
好吧。
所以，我们要进入这个 重定向的全新的概念。
而之前那么现在​​，在 我们已经主要途径
与被交互我们 程序是通过标准输入
和标准输出。
对？
我们为用户输入 东西和计算机
吐回给我们的终端。
>> 但也有其他 如何让我们互动
与计算机与我们的 这不只是我的计划
物理打字的东西 在我的时候提示我。
而我们做到这一点的方法是 通过大于胡萝卜
和管道符号。
因此，我们也可以读取和 编写使用的文件。
>> 所以我们这样做的方式是 大于胡萝卜，所有正在做
正在写什么你 文件具有到一个单独的文件中。
因此，举例来说，如果我 想跑的hello world
我想输出到 保存在另一个文件
而不是仅仅打印出来给我，我 可以只比胡萝卜做的更大，
output.txt的。
因此，所有这一切做的是 我hello.world程序，
不管其输出是，它的 保存在一个名为output.txt的文件。
所以，大卫做了的方式 .csv格式与学生的名字，
它是相同的，你们可以做的。
>> 这有什么特别 有用这里有更大
than--两个大于胡萝卜 迹象，您可以追加到一个输出
文件，这意味着你 只需添加在它之上。
你可以只是不断增加 每增加一点output.txt的
你正在做的事情。
或者，如果你开始进入更多 复杂的程序，两个较大
比胡萝卜，只是打印 出了错误信息。
所以说，你有一个巨大的 错误消息量
和你想读 通过所有这些，你的
不希望有滚动 通过你的终端，
可以真正地做到 大于output.txt的
并且它要保存 所有的错误
在一个文件名为output.txt的那 你可以通过阅读。
听众：哪里是文本文件保存？
ANDI彭：它保存在同一 目录下，你的程序。
所以，你只要回去看看吧。
而同样的事情，我们 可以输入做的是
我们可以采取实际 一些文件的内容
我们可以输入该到我们的程序。
因此，而不是做命令 在那里你身体行参数
必须输入事 每一次，你
可实际上只是有一个名为 input.txt的，只是把它所有的研究。
>> 然后通过管道是特别爽，因为 它可以采取一个节目的输出
并把它作为输入 的另一个程序。
因此，例如，在你的球员“的Vigenere， 有这行代码，你
球员正在运行，你也许也许 真的不知道这是什么doing--
这./generate 1000年管./42。
对？
>> 因此，所有的在做，如果我们只是 看看这一步一步，
该./generate，这意味着我 运行我的程序产生。
即采取在1000在它的输入端。
所以我想生成1000随机 数字和我要去管that--
或者我会用that--输出 输入我的程序调用的发现。
而且我会尽量找42出 从这些1000生成的数字
数字。
这是否行代码，使 有意义的其他人？
>> 所以在这种方式，我们正在保存 我们一吨的步骤。
我们没有运行，保存， 该文件，然后把它放进发现。
我们可以做这一切在同一行。
所以，无论是生成输出， 坠落它右后卫找到。
是吗？
>> 听众：而在指挥方面 行参数，是that--那
三个命令行参数？
它的产生，find--没有，four-- 产生，1000，查找和42？
或者是the--
ANDI彭：这样的管道并没有真正 算作一个命令行参数
因为编译器或 终端知道该管道，
哦，我知道我必须看前 管道，因为这是我的输出
我必须照顾 管，因为这是我的意见。
所以它知道that--的 ./generate和1000，
这些都是那么两个命令参数 只是为第一程序。
然后./find 42两个命令 行参数的第二个项目。
是啊。
每个人都好就这个？
>> 因此，只要真正的快，做什么 这三行代码呢？
很简单。
任何人想告诉我 什么样的第一行呢？
听众：[听不清]。
>> ANDI彭：把它看成just-- 什么是大于胡萝卜吗？
>> 听众：它把东西 到下一行。
ANDI彭：那么，什么是 那相反？
听众：它把下一个 事成的第一件事情。
ANDI彭：是的。
因此，所有这一切做的是你 运行程序.hello--
您正在运行一个名为你好程序。
你打算给它 称为输入input.txt的。
对？
因为把它看作只是 物理进入打招呼。
然后，你要保存 在文件输出名为output.txt的。
如何下联？
想告诉我什么 第二行呢？
听众：[听不清]。
ANDI彭：对不起。
再说一次。
艾略特。
>> 听众：所以它把​​一个 数字到查找列表。
>> ANDI彭：是的。
所以找到，请记住，在 为了运行找到你
需要知道你正在寻找。
所以所有的它做 这里要说的是它给你
预先分配的一组的 数字，然后找到是怎么回事
以搜索那些为42的数目。
然后15。
请记住，你们跑这 当你测试你的代码。
现在你明白这是什么做？
>> 听众：它的投入 该组指令
通过三通过向[听不清] 三，获得the--赢得比赛。
>> ANDI彭：是的。
>> 听众：通过输入那些 指令到程序中。
>> ANDI彭：差不多。
所以波浪CS50 / pset3 / 3x3的，所有的 在做的是，我们创建了一个文本
文件把所有的 游戏准备好你们。
所以，你的游戏玩，你just-- 我们只是把那到你的程序。
因此，我们已经创造了这个 板，然后我们
把该板到你的程序 跑，并创造了三个瓷砖
三。
这就是它在做什么。
>> 所以实际上也存在神奇 怎么回事幕后
那你们没 程序，我们编程。
但是，现在你们明白为什么 我们这样做，所以这一切都很好。
好吧。
>> 因此，尽管重定向是一个非常 有用的，C具有普遍的机制
用于读取和写入 它自己的文件。
没有什么概念 困难在这里，所以我
刚准备要经过 真的，真的很快。
所有这一些记忆 并确保你们
语法是正确使用它。
我们会做到这一点的方法是 创建的参考文件，
我们会打开这个​​文件，然后我们 会做所有的阅读和写作
然后关闭该文件。
当你们的事 要记住的是
虽然这样做，是因为 我们正在关闭和打开文件，
所有这些命令包括 在standard--标准I / O
图书馆。
所以一定要确保每当你 这样做，你已经included--
＃included--标准I / O点小时。
>> 所以，真正的快。
第一步，你要创建 的引用，该文件。
而现在，我们所做的指针，你 你们能告诉我这是什么行代码
是在做。
对？
所有这一切它做的是创造一个 指针命名的文件类型的文件。
因为你知道这是怎么回事 指向一个文件，你
要打开该文件。
那么你˚Fopen--所有 它的作用是打开文件。
>> 这是文件名。
而且有三件事情可以做。
你可以读，写或追加。
最普遍，你们 将读取或写入
因为你要么将是 输入文件或输出之一。
所以几乎r和w分别在两个 你会使用最多的事。
>> 因此，在这种情况下，所有我所做的就是 创建一个指向一个名为文件。
我打开它，我reading--我 打开此文件名为file.txt的
而我读它。
这就是我正在做的这一点。
然后，这些都只是在功能 你可以看不同的东西
或写不同的东西 或者跳到不同的地方
在那里，你想看看。
所有这些都是在网上。
所有这些，你可以只是谷歌。
无需记住它们。
他们只是在那里， 一次性供您使用
如果您想为 能够使用它们。
>> 所以，如果我想刚才读 在一个字符的时间，
我会做文件龟etc。
或者，如果我想读取一行 文本的时间，我会做与fgets。
等等，等等。
所有这些只是做不同 你们的事情可以使用。
>> 然后最后，经过我 做读取或写入，
我只是要FCLOSE该文件。
请记住，这是其一 那些，记住，请
这样做，否则您的文件 是行不通的。
之前，请务必打开一个文件 阅读或阅读，
你必须始终 关闭它，如果你打开​​它。
同样的事情与记忆，对不对？
你必须始终以 内存和释放它。
在这里，你必须始终打开 试图读取它之前的文件
而你总是要 关闭你打开它之后。
>> 所以，这也是在网上。
我要你挑战家伙 那种写一个程序，打印
hello.world到一个文件。
这真的很简单。
它本质上只是涉及 的代码的几行
这只是以前写的。
你打算把他们 一起写的。
>> 因此，一些重要的事情要记住 而你们正试图利用这一点。
如果这一切都是非常有用的 本周你的PSET，
是FOPEN创建一个文件指针。
这不是真正的物理文件。
所有它指向该 文件要打开。
而你从本质上讲，只要 您正在使用的任何其他职能
像FREAD和FWRITE 或龟etc或与fgets，是
那你只是路过解决此 指针的所有这些功能。
所以你没有真正采取这一 文件并使用它为你的功能，
你只是把指针 并把它这些功能
这样就可以使用。
>> 如果你忘记关闭 您在使用它后的文件，
你的程序会出现内存泄漏。
从本质上讲，所有的手段 是不好的事情会发生
和你的程序将 无法正常工作。
等等PSET中 一开始，我觉得
有一个短的，在那里他explained-- 内特explained--什么Valgrind的了。
所有Valgrind是一个方法可以让你 确保你不会泄漏内存。
所以，你们要进行 确保你看，短期
因为这说明它 真的很好会发生什么。
好。
于是我通过去真的， 真的很快，因为我真的
想要去谈论 处理器集之前，你们离开。
有没有人有问题的概念？
大多都是这只是语法 你可以用它来读取或写入文件。
>> 最后，大家的喜爱。
我们要谈的pset的现在。
因此，举手表决，多少 你们看过规范这个星期？
噢，那是一半。
那很好。
因此，这实际上是一个真正的， 真正有趣的PSET的意义
你觉得自己像一个 侦探，因为你
做所有这些非常酷的事情 你不知道，你可以做
但现在它真的很酷 你可以做他们。
它实际上是一个很大 简单的比你们想象。
>> 所以基本半部 这个程序是你
要下载源代码或 发行代码写的我们。
而你将有一个文件夹 所谓的BMP和其他文件夹
所谓的JPG。
在您的BMP，你 将有三个方案。
其中之一是已经为你写的。
所以CSV模式中有效是一个程序 我们已经写
对于你，你要去下载。
所有这些都需要输入一张图片 并使得它的一个副本输出。
这是所有的文件在做什么。
>> 但是，你想要做什么 whodunit--所以你们有多少人
你们还记得在小学五年级或maybe-- 你younger--也许三年级，
当你们有秘密消息， 你不得不把一张纸了它
解码消息？
是吗？
所以，这就是我们正在做的 但这次的计算机。
因此，我们已经给你这个可爱的形象。
看起来不像 什么，但下方
这是一个线索，会帮助你 与回答这个问题，我们问你。
>> 从本质上讲，你想要什么 要做的就是输入该文件，
围绕调整一些东西， 也许调整颜色，
转移的事情，所以，无论 该消息是能安然度过。
所以里面有隐藏 像素和信息
如果你正确地编写代码 是要解码，并告诉你
这是什么线索。
所以一些有用的提示如何 你会去接近这一点。
>> 你真的想了解 自己与文件I / O
因为我们从阅读 文件和写入文件。
对？
所以，每当我们做 即，涉及
文件I / O。你会 有熟悉
有，你是怎么打开的图片文件？
你怎么写入文件的图片？
你怎么做所有这些事情？
这将是非常有用的。
>> 其次，你怎么样 要能够改变
该清理这幅画的颜色？
它可能会涉及到 调整你的像素或RGB值
地方在那里，本质上。
有没有正确的方式 只要解决这个你
can--只要你可以种 调整的那些像素，使其
看起来像你关心的东西。
这就是我们所关心的为好。
因此，有很多方法可以做到这一点。
刚玩它，直到 你会得到一些作品。
而且你会很 代码惊奇地发现几行
你需要真正做到这一点。
我说的是像三 代码总行数
你需要写 为了做到这一点。
所以，如果你发现自己 写40，30行代码，
你可能就错了。
所有你需要做的是一种 玩的颜色
看看该怎么做了。
>> 于是我们进入了一点 到的一个问题更难。
在这里，我们有调整 我们问你在哪里
用于：我们给你输入 一张图片，你的大小调整
这个图片弄成 或大或小一点
这取决于我们给你的尺寸。
所以请记住讲座 大卫很快
瞥了一眼信息如何 通过您的计算机上检测到
意味着它是一个类型的文件。
所以一个Word文件中有特殊的 前面那个字符
告诉你的电脑是一个Word文件。
同样的事情与JPEG格式。
在这种情况下，我们将 给你一个JPEG文件。
我们所知道的是，JPEG 文件是一个图片，对吧？
但电脑与众不同之 它非常具体的方式。
因此，在开始时 任何JPEG文件，你
将有什么所谓的位图 信息报头和位图文件头。
所有这些都为 不同的数据
告诉您的计算机，嘿嘿， 听好了，一个JPEG文件上来
而这些都是尺寸或 该JPEG的特点。
>> 所以你们真的想知道 哪些信息内部存储
这些标题和 什么是它们的大小。
当你运行，因为 通过你们的节目，
你会想 跳过这一数额。
对？
因为你不关心 有关修改标题，
你关心的修改有什么后。
对？
所以一定要确保你们知道 这些东西有多大。
>> 其次，在开始之前 试图调整你的形象，
你可能会想 保存原始的尺寸。
对？
因为如果我告诉你，这幅画 是100像素乘以100像素，
我想你做 这四次较大，
你知道你必须 乘以4的尺寸。
所以，你想要一个输出文件 400×400像素，例如。
因此，它是非常有用的，你们要 保存原始的尺寸。
再后来，经过 你完成了调整，
你可以写新的报头与 调整后的新维度。
>> 而方式，你身体 可以创建在大像素
是，你可以写 新RGB--记得，RGB，
所有代表的是红，绿， 和blue--像素的输出文件。
而你会想 有不同量的什么
我们称之为填充。
所有的填充是有空间 之前和图片后，
告诉your--基本上是 告诉你的图片有多大它
应占用。
这是很抽象了很多 你，如果你还没有读过pset的规范，
但它的将是 因为当非常有用
你实际上读通过它。
你喜欢的哦，是啊，这是有道理的。
为什么我要这么做？
说得通。
>> 最后，这可能是一个 最令人沮丧的程序
曾经只是因为你不能 告诉我们，如果它的工作与否。
所有这些计划，恢复，是 做的是，如果正常运行，
它应该能突然 回收50％的图像，
失去了我们的硬盘驱动器上。
所以，这个程序问题 是，你不能真正测试
因为无论你恢复 他们或者你没有。
所以那种你只要 必须发挥与它周围，
如果你的程序是 正常工作，你会
突然看到，在 您的目录你已经
得到了一个巨大的量 照片是现在。
>> 所以，我怎么会接近 这个问题，我们
要给你什么 被称为card.raw文件。
从本质上讲，这是 只是损坏的文件
与所有的图片存储在该 你将需要从恢复。
所以，你可能会想 输入您的card.raw，或打开，
您card.raw文件和你 将要处理
它能够存储JPEG文件。
>> 因此，我将通过跟踪和存储启动 每个单独的JPEG，你找到它。
你不会单独所有 突然只创建50个JPEG文件。
你会想保留 跟踪你打开多少。
然后你要 要确保，当你
写入buffer--你们 会知道我在说什么
一旦你读了spec--要 请确保您使用的是无符号
字符缓冲区。
>> 然后你要问 你自己的问题，
多少字节是在一个 CF--是在一个卡文件？
这就是你要多少 想读入您的缓冲区。
你会希望确保 两个对齐因为你
不会有随机存储器泄漏。
你知道到底有多少 字节，你需要多少
字节，你希望他们有。
>> 然后最后，你要 使用一种称为函数sprint--
■打印F--生成自定义文件 名称为每一个新的JPEG，你觉得。
在创建因此和 发现JPEG文件在你的卡，
你会想 存储它们并将它们命名。
对？
所以，你要 要使用该功能
创建的名称 可以存储所有的JPEG文件。
>> 最后，不要忘记关闭 每个JPEG图像后，你就大功告成了。
因为你在做什么 要做的就是你
将可能有 某种循环的那
通过您的所有JPEG文件的迭代。
你会写一个JPEG 并改名为你找到它。
但是，就大功告成后， 与每一个JPEG，
你需要关闭它，你就可以开始 过去，在移动到下一个图像。
所以东西是 真的很有趣，我们喜欢做的事，
因为这是这样一个奇怪的问题集 也是一个古怪令人满意问题
集，就是所有的图片我们 对你，如果你正确恢复，
所有的图片是图片 你的精彩教学人员，无论是
哈佛，在这里 - 这里在耶鲁大学。
如果你碰巧 收回所有这些图片
并确定人员 在这些会员卡，
并采取selfies与我们联系，如果 你会发现我们身边的校园，
对于每一张照片你提交给我们，我们将 给你的Dropbox空间的千兆字节。
>> 因此，让我们做数学题在这里。
如果有50张图片和 50教学工作人员，
如果你碰巧发现所有50 我们，这是50千兆字节的Dropbox的，
基本上，我们会给予你们。
因此，一些额外的附加激励 如果你们不只是
关心恢复丢失的图像。
还有一些额外的奖励。
这是一个有趣的问题集。
这真的是。
这是一种令人沮丧，但随后 当你意识到变得更有趣，
哇，它的工作，现在我 具有所有的这些照片
我刚刚被自己创建的。
>> 在PSET有任何疑问？
对于任何人谁的已经 开始，如果您有任何疑问，
我会在这里过了几分钟 一节，如果你想和我说话。
干得好，伙计们。
我很抱歉，我的信息 倾倒在你们。
指针是真的，真的 具有挑战性和令人沮丧的。
>> 而且我真的很高兴， 你们一直伴随着我。
我们将讨论更深入 关于下周
当我们开始做哈希表和 更多的功能，让他们参与。
是啊。
因此，如果任何人有任何 的问题，我就在附近。
感谢您的到来，并采取更多 糖果，因为有更多的糖果。
酷。