1 00:00:00,000 --> 00:00:03,944 >> [音乐播放] 2 00:00:03,944 --> 00:00:10,732 3 00:00:10,732 --> 00:00:11,690 DAVID马兰:好的。 4 00:00:11,690 --> 00:00:14,674 这是CS50,这 是2周结束。 5 00:00:14,674 --> 00:00:16,840 我很抱歉,我不能 那里与你们的今天, 6 00:00:16,840 --> 00:00:18,300 但你在非常良好的手中。 7 00:00:18,300 --> 00:00:21,710 请允许我介绍 CS50自己的罗布·鲍登。 8 00:00:21,710 --> 00:00:29,106 9 00:00:29,106 --> 00:00:31,730 罗伯BOWDEN:当然,那 我们必须做出这样的事实乐趣 10 00:00:31,730 --> 00:00:36,820 他给我们送来一个垂直 视频和显示此。 11 00:00:36,820 --> 00:00:38,320 >> [视频回放] 12 00:00:38,320 --> 00:00:39,820 >> [音乐播放] 13 00:00:39,820 --> 00:00:42,350 >> [脚步声] 14 00:00:42,350 --> 00:00:44,730 >> - 此视频也没有 要看看这种方式。 15 00:00:44,730 --> 00:00:46,570 这本来是可以避免的。 16 00:00:46,570 --> 00:00:49,070 说不垂直视频。 17 00:00:49,070 --> 00:00:53,310 >> - 垂直视频发生在你 把你的相机走错了路。 18 00:00:53,310 --> 00:00:55,880 您的视频将结束 看起来像废话。 19 00:00:55,880 --> 00:00:57,650 >> - [咕噜咕噜] 20 00:00:57,650 --> 00:01:02,240 >> - 有越来越多的人沉迷 每天做垂直视频。 21 00:01:02,240 --> 00:01:06,240 它不开裂或没有, 但它仍然是非常糟糕的。 22 00:01:06,240 --> 00:01:10,410 有两种不同类型的 人谁是患有VVS。 23 00:01:10,410 --> 00:01:14,160 第一组对待 视频拍摄他们的照片一样。 24 00:01:14,160 --> 00:01:15,850 他们并不意味着任何伤害。 25 00:01:15,850 --> 00:01:19,180 他们只是不明白, 而你可以把图片, 26 00:01:19,180 --> 00:01:20,880 你不能真正把一个视频。 27 00:01:20,880 --> 00:01:21,880 >> [CRASH] 28 00:01:21,880 --> 00:01:23,460 >> - [猴声音] 29 00:01:23,460 --> 00:01:27,540 >> -The另一组是人 谁不给[哔]。 30 00:01:27,540 --> 00:01:31,090 >> - 垂直视频综合症是危险的。 31 00:01:31,090 --> 00:01:34,120 动态影像有 一贯水平。 32 00:01:34,120 --> 00:01:35,990 电视水平。 33 00:01:35,990 --> 00:01:38,380 电脑屏幕是水平的。 34 00:01:38,380 --> 00:01:41,580 群众的眼睛是水平的。 35 00:01:41,580 --> 00:01:45,170 我们不建 观看垂直视频。 36 00:01:45,170 --> 00:01:47,600 >> - 我爱垂直视频。 37 00:01:47,600 --> 00:01:50,410 >> -Nobody在乎你。 38 00:01:50,410 --> 00:01:53,340 >> - 如果这个问题的 任其发展,你太 39 00:01:53,340 --> 00:01:57,650 将开始显示四个视频 在一次只是为了节省带宽。 40 00:01:57,650 --> 00:02:02,400 >> -Letterboxed垂直视频会 是一个邮票大小。 41 00:02:02,400 --> 00:02:04,920 >> - 和它会到处蔓延。 42 00:02:04,920 --> 00:02:07,670 电影屏幕有 一贯水平。 43 00:02:07,670 --> 00:02:11,200 如果垂直视频成为 接受,电影院 44 00:02:11,200 --> 00:02:13,930 必须是又高又瘦。 45 00:02:13,930 --> 00:02:17,710 >> - 和所有的电影院会 必须让拆掉重建。 46 00:02:17,710 --> 00:02:22,090 而到了时候,他们被重建, 米拉库尼斯将是又老又丑。 47 00:02:22,090 --> 00:02:24,342 >> -Birds会撞到他们死。 48 00:02:24,342 --> 00:02:26,530 >> -We'll都得到僵 脖子是仰视。 49 00:02:26,530 --> 00:02:29,800 >> - 和没有人会坐在 前排再次。 50 00:02:29,800 --> 00:02:37,170 >> -George卢卡斯将重新发布之星 战争again--瘦版。 51 00:02:37,170 --> 00:02:41,860 >> - 我从来没有真正能够告诉 我想告诉的故事。 52 00:02:41,860 --> 00:02:46,030 这是一个伟大的机会,我 试验的新技术。 53 00:02:46,030 --> 00:02:48,150 >> -You're一个混蛋。 54 00:02:48,150 --> 00:02:54,430 >> -Every时间移动装置是用来 录制视频,诱惑是存在的。 55 00:02:54,430 --> 00:02:56,370 只是说没有。 56 00:02:56,370 --> 00:03:00,116 说不乔治·卢卡斯。 57 00:03:00,116 --> 00:03:04,062 说不老蜜拉库妮丝。 58 00:03:04,062 --> 00:03:06,600 说不垂直视频。 59 00:03:06,600 --> 00:03:12,511 >> -and如果你看到有人做出来,说, “你没有拍摄的正确的虚!” 60 00:03:12,511 --> 00:03:15,433 >> [音乐播放] 61 00:03:15,433 --> 00:03:18,842 62 00:03:18,842 --> 00:03:19,830 >> [结束播放] 63 00:03:19,830 --> 00:03:23,702 >> [掌声] 64 00:03:23,702 --> 00:03:27,598 >> [AUDIO OUT] 65 00:03:27,598 --> 00:03:44,041 66 00:03:44,041 --> 00:03:45,790 罗伯BOWDEN:--simple 加密的形式, 67 00:03:45,790 --> 00:03:49,500 这基本上是加密 和解密的秘密信息。 68 00:03:49,500 --> 00:03:52,590 所以在这里我们有一个非常简单的玩具。 69 00:03:52,590 --> 00:03:56,900 和想法是外环 旋转内圈周围。 70 00:03:56,900 --> 00:04:01,610 你可以看到,也许如果我放大 在,that--很难看到的。 71 00:04:01,610 --> 00:04:05,090 但是,等时,数 1--好,感动。 72 00:04:05,090 --> 00:04:09,120 >> 数字1映射到信 X,2号映射到信 73 00:04:09,120 --> 00:04:11,630 J.极其困难 不能快进。 74 00:04:11,630 --> 00:04:16,100 信2映射到J. 3号映射到D.因此, 75 00:04:16,100 --> 00:04:20,140 这个戒指,你可以给 有人信息1,2,3。 76 00:04:20,140 --> 00:04:22,624 出于某种原因,你 想告诉他们XJD。 77 00:04:22,624 --> 00:04:24,540 但是,你可以给他们 数字的一些消息, 78 00:04:24,540 --> 00:04:28,460 并且,只要它们具有本环,它们 可以解密你想说什么。 79 00:04:28,460 --> 00:04:32,510 >> 所以,你可能已经看到了这一点 密码学的具体的例子 80 00:04:32,510 --> 00:04:36,640 之前,如果周围的圣诞节 你看过圣诞故事。 81 00:04:36,640 --> 00:04:38,520 如果你从来没有见过 之前,那么就 82 00:04:38,520 --> 00:04:41,060 打开TBS在字面上 任何时候在圣诞节前夕, 83 00:04:41,060 --> 00:04:44,510 因为他们只是显示它背靠背 要回背靠背一整天。 84 00:04:44,510 --> 00:04:46,744 而相关的视频是这样的。 85 00:04:46,744 --> 00:04:47,410 [视频回放] 86 00:04:47,410 --> 00:04:50,020 -be是众所周知的所有杂 拉尔夫·帕克现 87 00:04:50,020 --> 00:04:52,850 任命小的一员 孤儿安妮秘密圈 88 00:04:52,850 --> 00:04:56,490 并有权所有荣誉 而发生的收益于此。 89 00:04:56,490 --> 00:04:59,010 签名小孤儿安妮。 90 00:04:59,010 --> 00:05:03,120 会签皮埃尔·安德烈·墨! 91 00:05:03,120 --> 00:05:07,460 荣誉和利益 已经在九岁的时候! 92 00:05:07,460 --> 00:05:12,530 >> [大呼小叫无线电] 93 00:05:12,530 --> 00:05:13,030 -来吧。 94 00:05:13,030 --> 00:05:14,000 让我们开始吧。 95 00:05:14,000 --> 00:05:18,274 我不需要所有的爵士乐 关于走私和海盗。 96 00:05:18,274 --> 00:05:20,440 - 听明天夜间 结论冒险 97 00:05:20,440 --> 00:05:22,540 的黑色海盗船。 98 00:05:22,540 --> 00:05:25,460 现在,它的时间为 安妮的秘密消息 99 00:05:25,460 --> 00:05:28,620 为你的成员秘社的。 100 00:05:28,620 --> 00:05:32,370 请记住孩子,只有成员 安妮的秘密圈 101 00:05:32,370 --> 00:05:34,880 可以解码安妮的秘密消息。 102 00:05:34,880 --> 00:05:39,100 请记住,伊能静取决于你。 103 00:05:39,100 --> 00:05:41,660 设置你的引脚为B2。 104 00:05:41,660 --> 00:05:43,960 这里是该消息。 105 00:05:43,960 --> 00:05:44,680 12。 106 00:05:44,680 --> 00:05:45,180 11。 107 00:05:45,180 --> 00:05:45,679 2。 108 00:05:45,679 --> 00:05:48,110 - 我在我的第一次秘密会晤。 109 00:05:48,110 --> 00:05:49,030 >> -25。 110 00:05:49,030 --> 00:05:49,834 14。 111 00:05:49,834 --> 00:05:51,040 11。 112 00:05:51,040 --> 00:05:51,854 18。 113 00:05:51,854 --> 00:05:52,670 16。 114 00:05:52,670 --> 00:05:54,570 >> 哦,皮埃尔在巨大的声音今晚。 115 00:05:54,570 --> 00:05:57,490 我可以告诉大家,今晚的 信息是非常重要的。 116 00:05:57,490 --> 00:05:57,990 -3。 117 00:05:57,990 --> 00:06:00,080 25。 118 00:06:00,080 --> 00:06:01,580 这与安妮自己的消息。 119 00:06:01,580 --> 00:06:02,880 请记住,不要告诉任何人。 120 00:06:02,880 --> 00:06:07,840 121 00:06:07,840 --> 00:06:11,130 >> - 五秒钟后,我的唯一 房间在房子里的九个男孩 122 00:06:11,130 --> 00:06:15,830 可以坐在隐私和解码。 123 00:06:15,830 --> 00:06:16,620 啊哈! 124 00:06:16,620 --> 00:06:17,340 乙! 125 00:06:17,340 --> 00:06:20,210 我去了下一个。 126 00:06:20,210 --> 00:06:23,300 E.第一个字是“是”。 127 00:06:23,300 --> 00:06:25,880 S.它现在来了更容易。 128 00:06:25,880 --> 00:06:28,400 U. 25。 129 00:06:28,400 --> 00:06:30,528 这是R. 130 00:06:30,528 --> 00:06:31,278 -COMe上,拉尔夫! 131 00:06:31,278 --> 00:06:31,861 我得走了! 132 00:06:31,861 --> 00:06:33,182 -I'll被降权,马! 133 00:06:33,182 --> 00:06:36,038 啧啧飕飕。 134 00:06:36,038 --> 00:06:42,840 T. O.“一定要” - 一定要什么呢? 135 00:06:42,840 --> 00:06:44,770 什么是小孤儿 安妮想说什么? 136 00:06:44,770 --> 00:06:46,381 一定要什么? 137 00:06:46,381 --> 00:06:47,825 >> -Randy也得去! 138 00:06:47,825 --> 00:06:48,866 请你出来? 139 00:06:48,866 --> 00:06:49,783 >> - 所有正确的,妈妈! 140 00:06:49,783 --> 00:06:51,786 我马上就出来! 141 00:06:51,786 --> 00:06:53,606 我是越来越近了。 142 00:06:53,606 --> 00:06:55,550 张力是可怕的。 143 00:06:55,550 --> 00:06:57,050 它以前如何? 144 00:06:57,050 --> 00:06:59,905 这个星球的命运 可以挂在平衡! 145 00:06:59,905 --> 00:07:01,736 >> -Ralphie,兰迪得走了! 146 00:07:01,736 --> 00:07:05,680 >> -I'll就出来,哭出声来! 147 00:07:05,680 --> 00:07:07,170 差不多了! 148 00:07:07,170 --> 00:07:08,150 我的手指飞。 149 00:07:08,150 --> 00:07:09,980 我的心是一个钢铁陷阱。 150 00:07:09,980 --> 00:07:11,496 每一个毛孔振动。 151 00:07:11,496 --> 00:07:13,268 这几乎是清楚的! 152 00:07:13,268 --> 00:07:13,767 是。 153 00:07:13,767 --> 00:07:14,609 是。 154 00:07:14,609 --> 00:07:15,108 是。 155 00:07:15,108 --> 00:07:16,449 是。 156 00:07:16,449 --> 00:07:20,240 一定要喝你的阿华田。 157 00:07:20,240 --> 00:07:20,740 阿华田? 158 00:07:20,740 --> 00:07:26,687 159 00:07:26,687 --> 00:07:27,520 一个最低级的商业? 160 00:07:27,520 --> 00:07:32,040 161 00:07:32,040 --> 00:07:34,920 王八蛋。 162 00:07:34,920 --> 00:07:35,890 >> [结束播放] 163 00:07:35,890 --> 00:07:39,650 >> 罗伯BOWDEN:所以这就是如何 阿华田涉及到加密。 164 00:07:39,650 --> 00:07:42,290 基本上CS50刚刚公布 阿华田,所以我们可以 165 00:07:42,290 --> 00:07:44,400 是一个糟糕的商业为阿华田。 166 00:07:44,400 --> 00:07:44,900 好吧。 167 00:07:44,900 --> 00:07:47,120 所以现在实际的计算机科学。 168 00:07:47,120 --> 00:07:50,670 还记得上周一,我们离开 潜水更深的字符串。 169 00:07:50,670 --> 00:07:52,820 因此,我们正在处理 字符串“Zamyla”。 170 00:07:52,820 --> 00:07:55,130 而且我们认识到 事实上,我们可以把 171 00:07:55,130 --> 00:07:57,510 “Zamyla”作为一个字符序列。 172 00:07:57,510 --> 00:07:59,740 请记住,我们学到了 支架符号。 173 00:07:59,740 --> 00:08:01,995 因此,如果该值储存 在字符串“s”,那么 174 00:08:01,995 --> 00:08:05,860 如果s表示托架0,这将 指示信资本Z. 175 00:08:05,860 --> 00:08:09,790 如果我们s表示支架1,即 会指示第一小写一个, 176 00:08:09,790 --> 00:08:14,220 依此类推,直到为s支架5, 这显示最后一个。 177 00:08:14,220 --> 00:08:17,090 >> 现在,请记住, 此字符串的长度为6, 178 00:08:17,090 --> 00:08:23,220 但是索引到字符串是 0到5,Z通过持续。 179 00:08:23,220 --> 00:08:28,650 所以,现在这个融入一个更大的图片 您的计算机的内存,您的RAM。 180 00:08:28,650 --> 00:08:32,020 因此,地方的计划, 你运行你的电脑 181 00:08:32,020 --> 00:08:34,780 需要记住Zamyla 某处存储器。 182 00:08:34,780 --> 00:08:36,029 因此,我可以有一个志愿者? 183 00:08:36,029 --> 00:08:38,840 184 00:08:38,840 --> 00:08:40,181 是的,请。 185 00:08:40,181 --> 00:08:50,120 186 00:08:50,120 --> 00:08:51,500 而你叫什么名字? 187 00:08:51,500 --> 00:08:52,410 >> 院长:院长。 188 00:08:52,410 --> 00:08:53,550 >> 罗伯BOWDEN:院长? 189 00:08:53,550 --> 00:08:54,910 很高兴见到你,院长。 190 00:08:54,910 --> 00:08:58,240 所以来这里了, 我们要你画 191 00:08:58,240 --> 00:09:00,740 对我们的好漂亮的内存布局。 192 00:09:00,740 --> 00:09:05,950 现在,我喜欢把内存 作为一个字节一个长条形, 193 00:09:05,950 --> 00:09:11,090 但只是为了显示目的,我们将 只是从左至右,从上到下。 194 00:09:11,090 --> 00:09:11,590 好不好? 195 00:09:11,590 --> 00:09:22,030 >> 所以,我要表现出 program-- Getstrings.c。 196 00:09:22,030 --> 00:09:25,760 所以,这一切的程序是 做的是要求四根弦 197 00:09:25,760 --> 00:09:28,830 从与用户 GetString的,然后打印 198 00:09:28,830 --> 00:09:30,950 无论是第一个串进了。 199 00:09:30,950 --> 00:09:32,840 我们忽略了两个通四人。 200 00:09:32,840 --> 00:09:33,610 行。 201 00:09:33,610 --> 00:09:38,210 所以,在这里now--时 我第一次请求S1。 202 00:09:38,210 --> 00:09:39,740 所以你的电脑。 203 00:09:39,740 --> 00:09:41,680 而要实现的GetString。 204 00:09:41,680 --> 00:09:46,710 所以,你请求一个字符串 我,我说好,院长。 205 00:09:46,710 --> 00:09:47,900 给字符串“院长。” 206 00:09:47,900 --> 00:09:50,300 >> 如此在内存,你 需要记住的“院长。” 207 00:09:50,300 --> 00:09:52,160 所以写到内存的某个地方。 208 00:09:52,160 --> 00:09:58,270 209 00:09:58,270 --> 00:09:59,210 完善。 210 00:09:59,210 --> 00:09:59,880 行。 211 00:09:59,880 --> 00:10:01,740 所以,现在我们已经S2。 212 00:10:01,740 --> 00:10:03,869 和s2将是 请求给GetString。 213 00:10:03,869 --> 00:10:05,160 所以,我要输入一个字符串。 214 00:10:05,160 --> 00:10:08,720 我要输入“汉娜”。 215 00:10:08,720 --> 00:10:10,586 因此,输入“汉娜”的地方到内存中。 216 00:10:10,586 --> 00:10:18,860 217 00:10:18,860 --> 00:10:19,360 是啊。 218 00:10:19,360 --> 00:10:23,000 A-H。 219 00:10:23,000 --> 00:10:25,550 >> 好了,现在S3。 220 00:10:25,550 --> 00:10:28,380 而这将是另一个 请给GetString。 221 00:10:28,380 --> 00:10:37,020 所以现在进入“玛丽亚”。 222 00:10:37,020 --> 00:10:37,520 好吧。 223 00:10:37,520 --> 00:10:40,980 然后还有最后一个 请求给GetString,S4。 224 00:10:40,980 --> 00:10:42,580 所以,我不知道。 225 00:10:42,580 --> 00:10:45,640 怎么样,我们一起去 反政教分离运动。 226 00:10:45,640 --> 00:10:49,460 所以输入到内存中。 227 00:10:49,460 --> 00:10:50,400 是啊。 228 00:10:50,400 --> 00:10:53,970 所以,只是做“抢”。 229 00:10:53,970 --> 00:10:54,560 >> 行。 230 00:10:54,560 --> 00:10:58,410 所以,现在explain--何必当初 你离开这些空间? 231 00:10:58,410 --> 00:11:01,340 为什么你有这样的空白 空间在这里,在这里,并在这里? 232 00:11:01,340 --> 00:11:05,170 233 00:11:05,170 --> 00:11:05,670 是。 234 00:11:05,670 --> 00:11:09,450 所以,当我去通知 打印s1--所以如果我们 235 00:11:09,450 --> 00:11:11,890 有“汉娜”运行 直到旁边的“院长” 236 00:11:11,890 --> 00:11:14,360 我们怎么知道什么时候 字符串“院长”结束? 237 00:11:14,360 --> 00:11:19,470 因此打印字符串S1可以有 只印有“DeanHannahMariaRob” 238 00:11:19,470 --> 00:11:22,720 如果它不具有任何线索 当“院长”实际上结束。 239 00:11:22,720 --> 00:11:23,240 >> 好吧。 240 00:11:23,240 --> 00:11:27,650 因此,在存储器中的方式,我们实际上 代表的字符串的这一端 241 00:11:27,650 --> 00:11:29,940 是用反斜杠零。 242 00:11:29,940 --> 00:11:32,620 所以这个空间正是我们想要的。 243 00:11:32,620 --> 00:11:34,040 它应该是一个反斜杠为零。 244 00:11:34,040 --> 00:11:37,690 这将是一个反斜杠零, 而这将是一个反斜杠为零。 245 00:11:37,690 --> 00:11:41,585 你可以有一个神话般的奖金 为是一个完美的志愿者。 246 00:11:41,585 --> 00:11:44,910 247 00:11:44,910 --> 00:11:45,860 以一个压力球! 248 00:11:45,860 --> 00:11:49,040 249 00:11:49,040 --> 00:11:49,700 >> 行。 250 00:11:49,700 --> 00:11:54,420 所以这个人物反斜线为零 我们如何表示字符串的结束。 251 00:11:54,420 --> 00:11:57,120 它是如何在任何给定的程序 要打印的字符串, 252 00:11:57,120 --> 00:11:59,760 这是how--记得我们学 上周strlen函数? 253 00:11:59,760 --> 00:12:00,940 字符串的长度? 254 00:12:00,940 --> 00:12:03,770 它是如何字符串的长度能 确定字符串是多久。 255 00:12:03,770 --> 00:12:05,810 它只是不断迭代 在人物 256 00:12:05,810 --> 00:12:08,217 直到找到 反斜线零字符。 257 00:12:08,217 --> 00:12:11,050 因此,重要的是要实现 关于反斜线零字符 258 00:12:11,050 --> 00:12:14,950 是它的代表 在位全部为零。 259 00:12:14,950 --> 00:12:18,980 因此注意到,这是明显的 从零字符。 260 00:12:18,980 --> 00:12:23,010 因此,零字符,如果你还记得 在实施例,他在结束了 261 00:12:23,010 --> 00:12:27,360 讲座中,其中的字符映射 用于:像大写字母A映射到65。 262 00:12:27,360 --> 00:12:29,130 小写映射到97。 263 00:12:29,130 --> 00:12:30,890 小写的B。将98。 264 00:12:30,890 --> 00:12:35,220 因此数字0映射用于:我不知道 知道了我的头顶。 265 00:12:35,220 --> 00:12:36,400 44或45。 266 00:12:36,400 --> 00:12:37,890 某处在该地区。 267 00:12:37,890 --> 00:12:40,850 >> 这样的字符0是实数。 268 00:12:40,850 --> 00:12:44,350 但是反斜杠零 映射到所有零位。 269 00:12:44,350 --> 00:12:46,380 因此,有区别 反斜线0之间, 270 00:12:46,380 --> 00:12:48,450 我们称之为空终止。 271 00:12:48,450 --> 00:12:53,210 有区别 反斜线零和字符零。 272 00:12:53,210 --> 00:12:54,350 >> 好吧。 273 00:12:54,350 --> 00:12:57,520 所以说话有点了解的字符串。 274 00:12:57,520 --> 00:13:01,470 于是,我们在这里看到,这是怎么 它会在内存中进行布局。 275 00:13:01,470 --> 00:13:07,940 所以这个想法字符串作为一个序列 characters--所以官方电脑 276 00:13:07,940 --> 00:13:10,750 sciency术语序列是一个数组。 277 00:13:10,750 --> 00:13:13,790 所以我们称之为一个字符串 字符数组。 278 00:13:13,790 --> 00:13:17,770 而实际上有其他数据 类型,我们可以使阵列出来。 279 00:13:17,770 --> 00:13:19,975 >> 因此,要鼓励这一点,我们来看一个例子。 280 00:13:19,975 --> 00:13:22,810 281 00:13:22,810 --> 00:13:29,812 我们叫它ages0.c我会 复制和粘贴我们的模板。 282 00:13:29,812 --> 00:13:32,470 283 00:13:32,470 --> 00:13:33,410 行。 284 00:13:33,410 --> 00:13:39,378 因此,这个方案我们 想要做的就是抓住时代 285 00:13:39,378 --> 00:13:45,160 三个学生选修的课程。 286 00:13:45,160 --> 00:13:49,240 因此,我们知道的INT age-- 现在我要说0。 287 00:13:49,240 --> 00:13:53,140 所以,你可能要说AGE-1,但 为了我们会看到非常短的, 288 00:13:53,140 --> 00:13:57,187 我会说INT age0等于调用getInt。 289 00:13:57,187 --> 00:13:59,270 因此,同样的调用调用getInt 我们一直在使用我 290 00:13:59,270 --> 00:14:01,561 没有发生被提示 他说,“给我的年龄。” 291 00:14:01,561 --> 00:14:03,120 但只是要求它。 292 00:14:03,120 --> 00:14:06,510 >> 而AGE-1等于调用getInt。 293 00:14:06,510 --> 00:14:09,600 和INT age2等于调用getInt。 294 00:14:09,600 --> 00:14:14,070 所以,再一次,三个学生,但 最终的变量指标 295 00:14:14,070 --> 00:14:16,890 是age0通过age2。 296 00:14:16,890 --> 00:14:17,550 行。 297 00:14:17,550 --> 00:14:23,960 因此,这个程序将采取一切 我们希望与age0,AGE-1,和age2, 298 00:14:23,960 --> 00:14:27,670 但这个方案最终 适用于三个学生。 299 00:14:27,670 --> 00:14:28,380 >> 行。 300 00:14:28,380 --> 00:14:32,110 所以,现在如果我想四名学生? 301 00:14:32,110 --> 00:14:36,000 好吧,我不得不回去 进入我的代码,更改注释, 302 00:14:36,000 --> 00:14:39,840 现在我们有一个int age3等于调用getInt。 303 00:14:39,840 --> 00:14:40,610 行。 304 00:14:40,610 --> 00:14:43,660 那么,谁看到了问题吗? 305 00:14:43,660 --> 00:14:47,310 问题是什么 有了这样的设置呢? 306 00:14:47,310 --> 00:14:47,810 是啊。 307 00:14:47,810 --> 00:14:53,110 308 00:14:53,110 --> 00:14:53,610 是啊。 309 00:14:53,610 --> 00:14:56,360 因此,我们要创建一个 变量为每个学生。 310 00:14:56,360 --> 00:15:00,140 现在的作品,但 最后,如​​果我现在 311 00:15:00,140 --> 00:15:06,500 说,“我想抓住的年龄 八名学生和16名学生 312 00:15:06,500 --> 00:15:11,340 或将然而,许多学生 在数百名学生在CS50 313 00:15:11,340 --> 00:15:16,750 或者成千上万的学生在校园里 或在世界上数十亿人? 314 00:15:16,750 --> 00:15:19,130 所以这终究是不可持续的。 315 00:15:19,130 --> 00:15:21,990 你看到自己复制任何时间 而像这样的粘贴代码, 316 00:15:21,990 --> 00:15:25,050 你一般应该感到 有一个更好的办法。 317 00:15:25,050 --> 00:15:31,290 >> 因此,这是我们引入 一个数组声明。 318 00:15:31,290 --> 00:15:34,564 因此,当你声明一个数组, 这是一般的格式 319 00:15:34,564 --> 00:15:35,480 是将会是什么样的。 320 00:15:35,480 --> 00:15:36,664 我们要说的类型。 321 00:15:36,664 --> 00:15:38,830 然后我们要 给该数组的名称, 322 00:15:38,830 --> 00:15:41,150 就像我们定义任何给定的变量。 323 00:15:41,150 --> 00:15:43,980 然后最后我们使用 这再次括号符号 324 00:15:43,980 --> 00:15:47,480 但在从不同的上下文 我们如何早期使用它。 325 00:15:47,480 --> 00:15:51,860 >> 所以在这里,这看起来像一个正常的 我们已经看到变量声明。 326 00:15:51,860 --> 00:15:54,890 因此,我们以前见过INT×半结肠。 327 00:15:54,890 --> 00:16:00,020 现在好了,我们可能会看到一些东西 如int x托架5。 328 00:16:00,020 --> 00:16:04,020 并把这一想法付诸了 调用getInt程序,我们have-- 329 00:16:04,020 --> 00:16:08,850 所以我们可以实现 此以相同的方式。 330 00:16:08,850 --> 00:16:13,630 >> 让我们在CS说,我们倾向于使用 N作为某物的数目。 331 00:16:13,630 --> 00:16:16,150 所以在这里我们要 存储4个学生。 332 00:16:16,150 --> 00:16:25,960 现在,我们可以说INT年龄 支架N--不太明白yet-- 333 00:16:25,960 --> 00:16:32,210 宣布4名学生组成的数组。 334 00:16:32,210 --> 00:16:38,050 因此,这将如何看在 内存将与此类似。 335 00:16:38,050 --> 00:16:39,570 清除此。 336 00:16:39,570 --> 00:16:46,606 而我们将要在什么地方 在memory--我把这个在那里。 337 00:16:46,606 --> 00:16:52,690 338 00:16:52,690 --> 00:16:53,808 >> 如此在存储器中。 339 00:16:53,808 --> 00:16:58,760 340 00:16:58,760 --> 00:16:59,727 一二三四。 341 00:16:59,727 --> 00:17:03,383 342 00:17:03,383 --> 00:17:09,849 我们有四个整数一行 对于四个整数数组。 343 00:17:09,849 --> 00:17:13,820 因此,目前,什么是 其中一个框的大小? 344 00:17:13,820 --> 00:17:17,190 345 00:17:17,190 --> 00:17:17,690 是啊。 346 00:17:17,690 --> 00:17:18,390 这是四个字节。 347 00:17:18,390 --> 00:17:19,690 这是32位。 348 00:17:19,690 --> 00:17:22,310 所以,现在,这是不同的 从阵列,我们 349 00:17:22,310 --> 00:17:24,020 看到人物的前面,数组。 350 00:17:24,020 --> 00:17:28,540 在一个字符串中的每个盒子里只有一个字节, 因为一个字符中只有一个字节。 351 00:17:28,540 --> 00:17:32,170 但随着整数数组,每个 盒必须是为了四个字节 352 00:17:32,170 --> 00:17:34,060 以满足整个整数。 353 00:17:34,060 --> 00:17:37,197 所以这是一个数组 4整数会是什么样子。 354 00:17:37,197 --> 00:17:40,510 355 00:17:40,510 --> 00:17:43,870 >> 然后回代码。 356 00:17:43,870 --> 00:17:47,460 现在,我们要实际存储 到整数数组。 357 00:17:47,460 --> 00:17:53,470 所以,现在这是一个非常,非常,非常 常见的模式是会在某个点 358 00:17:53,470 --> 00:17:54,680 成为肌肉记忆。 359 00:17:54,680 --> 00:17:56,710 所以,INT I等于0。 360 00:17:56,710 --> 00:17:57,940 我小于n。 361 00:17:57,940 --> 00:18:01,850 我加再加。 362 00:18:01,850 --> 00:18:05,790 年龄段i等于调用getInt。 363 00:18:05,790 --> 00:18:15,100 >> 所以这个循环,这种格式, 你应该得到很习惯。 364 00:18:15,100 --> 00:18:20,010 因此,这是通常我们将如何 遍历几乎所有的数组。 365 00:18:20,010 --> 00:18:23,690 现在可以看到这样的 从一开始就解释了为什么 366 00:18:23,690 --> 00:18:29,870 我们没有for循环去为INT i等于1,我小于或等于10。 367 00:18:29,870 --> 00:18:34,200 原因是,从开始 零使这项工作很好地与阵列。 368 00:18:34,200 --> 00:18:36,270 所以数组是零索引。 369 00:18:36,270 --> 00:18:40,360 如果该数组的长度为4, 该指数为0至3。 370 00:18:40,360 --> 00:18:42,880 >> 所以通过第一 迭代的for循环 371 00:18:42,880 --> 00:18:49,930 我们将要设置年龄 支架0等于调用调用getInt。 372 00:18:49,930 --> 00:18:52,440 所以,无论我发生了 在键盘上输入。 373 00:18:52,440 --> 00:18:56,970 在第二遍,我们 设置AGE-1等于调用getInt。 374 00:18:56,970 --> 00:18:58,230 第三关,age2。 375 00:18:58,230 --> 00:18:59,880 最后一传age3。 376 00:18:59,880 --> 00:19:05,750 因此,如果在该循环的第一次通 我输入号码4在键盘上, 377 00:19:05,750 --> 00:19:07,740 然后我们会在这里插入4。 378 00:19:07,740 --> 00:19:11,470 如果我进入了第二遍 50,我们就放了50在这里。 379 00:19:11,470 --> 00:19:15,180 在第三次我可能 进入负1,负1, 380 00:19:15,180 --> 00:19:21,810 然后最后,如果我进入0--和 现在想起来,这是指数三种。 381 00:19:21,810 --> 00:19:25,350 >> 之后,我们回送,我是 将要增加至4。 382 00:19:25,350 --> 00:19:27,770 i是不再小于n,这是4。 383 00:19:27,770 --> 00:19:29,840 我们跳出循环。 384 00:19:29,840 --> 00:19:32,578 那么,什么是错呢? 385 00:19:32,578 --> 00:19:38,140 386 00:19:38,140 --> 00:19:38,729 [听不清]? 387 00:19:38,729 --> 00:19:39,604 听众:[听不清] 388 00:19:39,604 --> 00:19:45,880 389 00:19:45,880 --> 00:19:46,400 >> 是。 390 00:19:46,400 --> 00:19:51,550 因此,阵列只有四个名额, 这意味着作为索引0至3。 391 00:19:51,550 --> 00:19:55,630 因此,如果是这样的话,我会 取值4在某些时候。 392 00:19:55,630 --> 00:20:00,910 年龄段4将被设定 无论发生什么事是在这里 393 00:20:00,910 --> 00:20:02,920 什么,我不得不说,进入6。 394 00:20:02,920 --> 00:20:05,010 那将是它设置为6。 395 00:20:05,010 --> 00:20:06,560 >> 但我们不知道什么是在这里。 396 00:20:06,560 --> 00:20:08,836 这不是存储器 我们接触到。 397 00:20:08,836 --> 00:20:10,710 所以,如果你还记得 以前的讲座, 398 00:20:10,710 --> 00:20:14,350 他打印出Zamyla的价值观和 在某些时候,他打这个细分 399 00:20:14,350 --> 00:20:17,990 故障。所以,你可能会看到 许多段错误,你 400 00:20:17,990 --> 00:20:20,530 实施一些习题。 401 00:20:20,530 --> 00:20:24,950 但是,这是一种方式,其中 你可能会遇到一个分割 402 00:20:24,950 --> 00:20:28,540 故障,当你开始访问 记忆中,你不应该有办法。 403 00:20:28,540 --> 00:20:34,117 所以我们没有获得 这个位置,这是一个错误。 404 00:20:34,117 --> 00:20:37,760 405 00:20:37,760 --> 00:20:40,190 >> 因此,这是更好的。 406 00:20:40,190 --> 00:20:45,820 现在还有一个小 问题与此代码。 407 00:20:45,820 --> 00:20:50,720 而这基本上是我们 还停留在四个学生。 408 00:20:50,720 --> 00:20:52,940 现在,如果我想使用八名学生,确定。 409 00:20:52,940 --> 00:20:54,350 这不是什么大不了的事。 410 00:20:54,350 --> 00:20:58,120 我可以进去,改变 评论和n更改。 411 00:20:58,120 --> 00:20:59,760 现在,这将与八名学生。 412 00:20:59,760 --> 00:21:02,190 如果我这个编译并运行 这一点,它会显示我 - 413 00:21:02,190 --> 00:21:07,870 它会要求整数八 学生和它只是工作。 414 00:21:07,870 --> 00:21:11,850 但它不到理想的需要 重新编译程序每一次 415 00:21:11,850 --> 00:21:15,960 我想改变学生人数 我想进入的年龄为。 416 00:21:15,960 --> 00:21:22,990 >> 因此,在最后的改进 这一点,因为我们将看到这里 - 我们 417 00:21:22,990 --> 00:21:26,177 要请求的人的数目。 418 00:21:26,177 --> 00:21:28,010 在这里,我们有一些 人在房间 419 00:21:28,010 --> 00:21:29,880 或任何年龄段的人在房间里。 420 00:21:29,880 --> 00:21:33,300 但是,我们将请求数量 人在房间里,从用户。 421 00:21:33,300 --> 00:21:36,171 因此,这是完全一样的做,而 循环,我们以前见过。 422 00:21:36,171 --> 00:21:37,920 这是完全一样的 do-whil​​e循环,你 423 00:21:37,920 --> 00:21:40,050 可实现对问题的设置。 424 00:21:40,050 --> 00:21:43,102 因此,只要他们是 输入的n小于1, 425 00:21:43,102 --> 00:21:45,310 因此,有必须是在 至少有一个人在房间里。 426 00:21:45,310 --> 00:21:47,407 只要他们是 输入的n小于1, 427 00:21:47,407 --> 00:21:48,990 那么我们要不断地问了。 428 00:21:48,990 --> 00:21:50,906 请输入号码 人在房间里。 429 00:21:50,906 --> 00:21:53,550 现在,当我们有多少 人在room-- 430 00:21:53,550 --> 00:21:58,020 所以我可能进入有 有200人在这个房间里。 431 00:21:58,020 --> 00:22:05,480 然后到这里,我们要来了 并宣布尺寸200的数组。 432 00:22:05,480 --> 00:22:10,220 我们声明数组的 大到足以容纳200岁。 433 00:22:10,220 --> 00:22:15,370 下来,它的循环 你会得到非常习惯。 434 00:22:15,370 --> 00:22:19,490 所以遍历数组, 分配给每个位置 435 00:22:19,490 --> 00:22:23,020 在该阵列的整数,和 那么最终我们在这里 436 00:22:23,020 --> 00:22:28,340 刚开迭代的例子 通过该数组,而不是分配价值, 437 00:22:28,340 --> 00:22:30,150 但访问值。 438 00:22:30,150 --> 00:22:33,810 >> 所以,在这里我们可以看到,我们 从现在说,一年的时间, 439 00:22:33,810 --> 00:22:40,470 人%我将%I岁, 其中第一个%i是我加1。 440 00:22:40,470 --> 00:22:43,010 所以,我是这样的指标变量。 441 00:22:43,010 --> 00:22:49,420 而第二个%我会是 值存储在阵列年龄加1。 442 00:22:49,420 --> 00:22:54,217 所以这个加1仅仅是因为我们 saying--这种加1,我加1岁。 443 00:22:54,217 --> 00:22:57,050 这加1仅仅是因为我们 从现在的人说,一年 444 00:22:57,050 --> 00:22:58,280 将这个老。 445 00:22:58,280 --> 00:23:01,080 >> 那么,为什么是这样的我加1? 446 00:23:01,080 --> 00:23:04,064 为什么我们有一个加1呢? 447 00:23:04,064 --> 00:23:04,564 是啊。 448 00:23:04,564 --> 00:23:07,410 449 00:23:07,410 --> 00:23:07,930 是。 450 00:23:07,930 --> 00:23:10,510 所以请记住阵列零索引。 451 00:23:10,510 --> 00:23:14,840 因此,如果我们打印这个出来 有人刚读输出, 452 00:23:14,840 --> 00:23:19,380 那么很可能他们想看到的东西 喜欢的人之一,个人排名第一, 453 00:23:19,380 --> 00:23:21,160 将20岁。 454 00:23:21,160 --> 00:23:23,570 人二号将是15岁。 455 00:23:23,570 --> 00:23:27,420 他们不想看到的人 零号是15岁。 456 00:23:27,420 --> 00:23:36,460 >> 因此,编译这一点,只是看到什么 它看起来like--创建一些空间。 457 00:23:36,460 --> 00:23:43,560 让年龄编译。 458 00:23:43,560 --> 00:23:45,080 运行青睐。 459 00:23:45,080 --> 00:23:46,580 我们看到在房间里的人数。 460 00:23:46,580 --> 00:23:48,850 所以我会说有 三个人在房间里。 461 00:23:48,850 --> 00:23:54,000 人的头号年龄, 让我们说15,20,25。 462 00:23:54,000 --> 00:23:59,680 现在我会说每年从 现在,他们将16,21,26。 463 00:23:59,680 --> 00:24:02,900 让我们来看看这个作品 的n不等于3。 464 00:24:02,900 --> 00:24:07,940 所以,如果我说的人数是5,一, 二,三,二,一,从现在起一年 465 00:24:07,940 --> 00:24:11,170 他们会是两个,三个, 四,三,二十岁。 466 00:24:11,170 --> 00:24:16,500 所以,我可以只为 轻易n为10,000。 467 00:24:16,500 --> 00:24:21,270 现在,我会坐在这里很 一个在进入老龄化,但这个工程。 468 00:24:21,270 --> 00:24:26,000 >> 所以,现在在内存的某个地方,我们 有大小万的阵列, 469 00:24:26,000 --> 00:24:28,830 所以最终40000 字节,因为有 470 00:24:28,830 --> 00:24:31,222 四个字节为每个整数。 471 00:24:31,222 --> 00:24:33,180 因此,有一组 尺寸万,我们可以 472 00:24:33,180 --> 00:24:36,201 存储这些10000人的青睐。 473 00:24:36,201 --> 00:24:36,700 好吧。 474 00:24:36,700 --> 00:24:40,070 任何有关这个问题? 475 00:24:40,070 --> 00:24:41,892 是啊。 476 00:24:41,892 --> 00:24:43,350 如果你给一个负数? 477 00:24:43,350 --> 00:24:44,870 让我们看看会发生什么。 478 00:24:44,870 --> 00:24:49,320 所以在这个特定case--数 人在房间里,消极的。 479 00:24:49,320 --> 00:24:52,580 它拒绝了, 因为在这里,我们发生 480 00:24:52,580 --> 00:24:57,180 待处理的事实,如果n是 不到一个我们要再次问。 481 00:24:57,180 --> 00:25:01,780 如果您尝试声明 大小为负的数组, 482 00:25:01,780 --> 00:25:03,950 它通常是行不通的。 483 00:25:03,950 --> 00:25:05,570 >> 所以让我们试试。 484 00:25:05,570 --> 00:25:08,000 让我们忽略了什么 他们的价值输入n个 485 00:25:08,000 --> 00:25:10,571 而只是说INT年龄负值。 486 00:25:10,571 --> 00:25:12,410 让我们来看看它甚至编译。 487 00:25:12,410 --> 00:25:14,100 我不知道。 488 00:25:14,100 --> 00:25:14,920 第 489 00:25:14,920 --> 00:25:18,280 因此,年龄声明为 阵列具有负大小。 490 00:25:18,280 --> 00:25:22,540 所以前期就识别到阵列不能 为负数的大小和拒绝。 491 00:25:22,540 --> 00:25:26,840 现在,如果我们不处理 这do-whil​​e循环正常, 492 00:25:26,840 --> 00:25:28,810 如果我们不检查 如果n小于1-- 493 00:25:28,810 --> 00:25:32,690 比方说,我们只是 没有这在所有 494 00:25:32,690 --> 00:25:35,940 相反,我们只要抓住一个整数。 495 00:25:35,940 --> 00:25:40,710 不管是什么整数, 我们声明大小的数组。 496 00:25:40,710 --> 00:25:44,250 >> 因此,编译器不能 可能抱怨现在。 497 00:25:44,250 --> 00:25:48,780 如果我编译this-- 因此它不能抱怨, 498 00:25:48,780 --> 00:25:51,480 因为它无法知道我 要输入一个负数, 499 00:25:51,480 --> 00:25:52,550 这可能是无效的。 500 00:25:52,550 --> 00:25:54,633 对于所有它知道,我可能 输入一个正数, 501 00:25:54,633 --> 00:25:56,000 这是完全有效的。 502 00:25:56,000 --> 00:26:01,090 所以我想,如果我进入负1 房间里的人,分段错误。 503 00:26:01,090 --> 00:26:06,040 >> 那么好吧。 504 00:26:06,040 --> 00:26:13,160 因此,让我们加入这回只是 保持它原来是什么。 505 00:26:13,160 --> 00:26:15,640 因此,请青睐。 506 00:26:15,640 --> 00:26:18,120 现在,如果我想尝试 负age--让我们 507 00:26:18,120 --> 00:26:19,710 说,有五人在房间里。 508 00:26:19,710 --> 00:26:23,180 人的头号年龄 为负4,人3 509 00:26:23,180 --> 00:26:26,500 是零,人three--行。 510 00:26:26,500 --> 00:26:29,850 所以在这里,一年后的今天,人的数量 一会是负的3岁。 511 00:26:29,850 --> 00:26:32,830 所以,很可能是没有意义的。 512 00:26:32,830 --> 00:26:37,220 但是,这仅仅是因为看 在代码中所有我们正在做的 513 00:26:37,220 --> 00:26:40,260 请求调用getInt。 514 00:26:40,260 --> 00:26:44,110 >> 现在,如果我们曾经有过 GetPositiveInt功能 515 00:26:44,110 --> 00:26:49,690 或者我们刚刚只是做到了这一点 排序一致,而循环出现了下滑, 516 00:26:49,690 --> 00:26:52,340 那么这将完全正常工作。 517 00:26:52,340 --> 00:26:54,200 但在这个特殊的 情况下,我们只是不 518 00:26:54,200 --> 00:26:57,772 碰巧是处理负值。 519 00:26:57,772 --> 00:26:59,147 有关数组的任何其他问题? 520 00:26:59,147 --> 00:27:02,290 521 00:27:02,290 --> 00:27:03,250 行。 522 00:27:03,250 --> 00:27:09,380 >> 所以,我们现在已经看到阵列。 523 00:27:09,380 --> 00:27:12,500 而我们将需要使用 本作的命令行参数。 524 00:27:12,500 --> 00:27:14,680 因此,在问题设置two-- 我知道你们许多人 525 00:27:14,680 --> 00:27:18,040 可能仍在工作的问题集 之一,但问题设置两个快到了。 526 00:27:18,040 --> 00:27:22,260 在问题设置两个,你要 必须处理字符串,数组, 527 00:27:22,260 --> 00:27:23,950 和命令行参数。 528 00:27:23,950 --> 00:27:26,270 >> 那么,什么是命令行参数? 529 00:27:26,270 --> 00:27:29,570 现在,你可以看到到这里一 小传情什么的 530 00:27:29,570 --> 00:27:30,950 将要发生的事情。 531 00:27:30,950 --> 00:27:32,950 我们看到INT为主,INC ARGC, 字符串argv的括号内。 532 00:27:32,950 --> 00:27:34,560 533 00:27:34,560 --> 00:27:38,130 因此,首先让我们来试着解读 是什么,它​​尽可能地说。 534 00:27:38,130 --> 00:27:40,800 如今,OK。 535 00:27:40,800 --> 00:27:44,637 >> 因此,在命令行中,你应该 已经习惯了某些命令 536 00:27:44,637 --> 00:27:48,580 现在,你可能已经运行 CD在终端前。 537 00:27:48,580 --> 00:27:52,100 因此,如果我们说的CD PSET1, 你知道,这应该 538 00:27:52,100 --> 00:27:55,050 要改变到PSET1目录。 539 00:27:55,050 --> 00:27:59,120 >> 现在发现,你从来没有 之前写的这样的程序。 540 00:27:59,120 --> 00:28:03,120 你写的每个程序, 你会跑,说,点斜线马里奥, 541 00:28:03,120 --> 00:28:06,779 点斜线贪婪,然后 可能会提示您输入。 542 00:28:06,779 --> 00:28:08,570 现在,这不是 更改目录一样。 543 00:28:08,570 --> 00:28:12,770 当你运行光盘,它并没有那么说, 该目录下你想cd到? 544 00:28:12,770 --> 00:28:17,200 相反,你刚才说,CD PSET1和 它只是进入PSET1目录。 545 00:28:17,200 --> 00:28:20,430 >> 所以类似地,我们有其它例子。 546 00:28:20,430 --> 00:28:21,540 让你好。 547 00:28:21,540 --> 00:28:25,760 当你运行make,它并没有那么说, 该方案将你喜欢做什么? 548 00:28:25,760 --> 00:28:29,620 你刚才说,在 命令行让你好。 549 00:28:29,620 --> 00:28:31,060 >> 此举是另一个例子。 550 00:28:31,060 --> 00:28:34,840 这一次,我们正在移动的 mario.c文件上一级目录。 551 00:28:34,840 --> 00:28:38,060 所以,现在我们知道这个例子 我们真正传递了两个参数。 552 00:28:38,060 --> 00:28:42,090 有mario.c作为第一个参数, 和点点是第二个参数。 553 00:28:42,090 --> 00:28:46,140 然后当你运行make,你 看到很长的命令line-- 554 00:28:46,140 --> 00:28:50,580 真的长的命令 印在命令行。 555 00:28:50,580 --> 00:28:53,590 因此,长期command--这 是它只有很短的一部分, 556 00:28:53,590 --> 00:28:56,090 但现在我们有三个 命令行参数。 557 00:28:56,090 --> 00:28:59,750 点短跑零,你好,和hello.c的。 558 00:28:59,750 --> 00:29:03,497 >> 因此,这些都是命令行 论点,论据 559 00:29:03,497 --> 00:29:05,580 那你传递的 命令行,以便它 560 00:29:05,580 --> 00:29:08,680 不必被提示 当你运行该程序。 561 00:29:08,680 --> 00:29:13,090 这将是令人沮丧,如果当 您运行铛它说:“好, 562 00:29:13,090 --> 00:29:15,630 这program--这 文件是在编译? 563 00:29:15,630 --> 00:29:17,010 HELLO.C。 564 00:29:17,010 --> 00:29:19,440 什么标志你会 想进入?破折号O操作。 565 00:29:19,440 --> 00:29:21,190 你要什么 该文件被称为? 566 00:29:21,190 --> 00:29:21,690 您好。 567 00:29:21,690 --> 00:29:25,290 不,你只要运行铛 冲Ø你好hello.c的。 568 00:29:25,290 --> 00:29:28,820 >> 因此,在回顾这个。 569 00:29:28,820 --> 00:29:32,920 现在argc-- ARGC是参数计数。 570 00:29:32,920 --> 00:29:36,620 它的命令行的数量 输入参数在命令行。 571 00:29:36,620 --> 00:29:39,720 那么,argv--技术 在V代表矢量, 572 00:29:39,720 --> 00:29:41,460 这基本上意味着阵列。 573 00:29:41,460 --> 00:29:42,680 但是你可以忽略。 574 00:29:42,680 --> 00:29:47,540 Argv--我们有串argv的, 所以字符串argv的括号内。 575 00:29:47,540 --> 00:29:50,150 因此,这是另一种形式的 括号你以前没有见过。 576 00:29:50,150 --> 00:29:52,300 所以,我们看到的支架 符号时,我们已经说过了, 577 00:29:52,300 --> 00:29:53,970 像,字符串s等于Zamyla。 578 00:29:53,970 --> 00:29:56,910 小号托架0访问字符Z. 579 00:29:56,910 --> 00:30:00,720 >> 我们也看到括号时 我们说INT年龄支架5。 580 00:30:00,720 --> 00:30:03,160 这个声明的大小5阵列。 581 00:30:03,160 --> 00:30:06,280 因此,这里是一个版本的 我们以前没见过括号。 582 00:30:06,280 --> 00:30:09,630 因此,这类字符串的argv的 将完全熟悉 583 00:30:09,630 --> 00:30:12,050 这将只是一个字符串。 584 00:30:12,050 --> 00:30:14,520 现在括号表示 这是一个数组。 585 00:30:14,520 --> 00:30:19,920 所以字符串argv的括号手段 这ARGV是一个字符串数组。 586 00:30:19,920 --> 00:30:22,540 现在技术上的字符串 是字符数组。 587 00:30:22,540 --> 00:30:26,400 所以,这是现在一个数组 字符数组的。 588 00:30:26,400 --> 00:30:31,490 但它更容易去思考 串这只是作为一个阵列。 589 00:30:31,490 --> 00:30:34,900 >> 那么,为什么会在括号内是空的? 590 00:30:34,900 --> 00:30:38,170 就像,为什么我们不能说, 支架5,支架N + 591 00:30:38,170 --> 00:30:40,700 592 00:30:40,700 --> 00:30:41,200 是啊。 593 00:30:41,200 --> 00:30:43,731 594 00:30:43,731 --> 00:30:44,230 是啊。 595 00:30:44,230 --> 00:30:46,396 我们不知道有多少 输入有将要。 596 00:30:46,396 --> 00:30:53,560 因此,如果我们看一下铛的例子, 我们说铛破折号Ø你好hello.c的。 597 00:30:53,560 --> 00:30:56,710 在这种特殊情况下,有发生 是三个命令行参数。 598 00:30:56,710 --> 00:31:00,522 这样一来,brackets--我们拭目以待 在第二它不会是三种。 599 00:31:00,522 --> 00:31:01,730 它在技术上的数字是4。 600 00:31:01,730 --> 00:31:04,030 但支架,我们会 比方说,有三种。 601 00:31:04,030 --> 00:31:08,220 但是现在,如果我们看招 mario.c点点,括号 602 00:31:08,220 --> 00:31:09,760 我们希望把两个他们。 603 00:31:09,760 --> 00:31:12,884 >> 这里面有很多的命令是 具有可变数量的命令行 604 00:31:12,884 --> 00:31:13,620 参数。 605 00:31:13,620 --> 00:31:17,430 那么这个版本的 括号符号表示 606 00:31:17,430 --> 00:31:20,820 是的argv是一个字符串数组。 607 00:31:20,820 --> 00:31:24,360 但是,我们不知道有多少 字符串的数组。 608 00:31:24,360 --> 00:31:27,090 我们如何然后知道如何 许多字符串数组中? 609 00:31:27,090 --> 00:31:28,870 这是整点ARGC。 610 00:31:28,870 --> 00:31:32,300 ARGC告诉我们的argv有多长。 611 00:31:32,300 --> 00:31:36,500 >> 所以,过去的事情保持 头脑是,从技术上, 612 00:31:36,500 --> 00:31:40,820 命令本身视为一个 的命令行参数。 613 00:31:40,820 --> 00:31:45,330 所以光盘PSET1,有两种 命令行参数。 614 00:31:45,330 --> 00:31:50,260 在本身的程序,光盘,然后 它的实际参数部分,PSET1。 615 00:31:50,260 --> 00:31:54,490 任何你写迄今程序 已经有一个命令行argument--点 616 00:31:54,490 --> 00:31:55,320 斜线马里奥。 617 00:31:55,320 --> 00:31:57,350 这是唯一的命令行参数。 618 00:31:57,350 --> 00:32:00,900 >> 所以,现在看着铛 冲Ø你好hello.c的。 619 00:32:00,900 --> 00:32:01,905 那么,什么是ARGC? 620 00:32:01,905 --> 00:32:05,260 621 00:32:05,260 --> 00:32:06,080 4。 622 00:32:06,080 --> 00:32:08,140 所以ARGC为4。 623 00:32:08,140 --> 00:32:12,140 铛,所以argv的支架0是铿锵。 624 00:32:12,140 --> 00:32:15,630 argv的支架1是冲刺0。 625 00:32:15,630 --> 00:32:21,870 argv的支架2个招呼, argv的支架3 hello.c的。 626 00:32:21,870 --> 00:32:26,813 好了,问题在这,然后我们会 看一些编程的例子。 627 00:32:26,813 --> 00:32:29,460 628 00:32:29,460 --> 00:32:30,480 >> 行。 629 00:32:30,480 --> 00:32:36,260 因此,我们将看看hello3.c。 630 00:32:36,260 --> 00:32:41,890 所以这应该是由熟悉 的第一个C的例子之一 631 00:32:41,890 --> 00:32:45,800 我们有,我们只想说,你好 世界,但现在这个就比较一般了。 632 00:32:45,800 --> 00:32:52,300 因此,我们在这里打个招呼 %S反斜线ñargv的支架1。 633 00:32:52,300 --> 00:32:57,440 Notice--所以直至这一点,这是 什么我的模板文件看起来像。 634 00:32:57,440 --> 00:33:01,800 我有INT主要(无效),然后我会 做一些在主函数。 635 00:33:01,800 --> 00:33:05,100 现在相反,一旦我们开始处理 使用命令行参数, 636 00:33:05,100 --> 00:33:07,890 我们要说明一个 不同的形式为主。 637 00:33:07,890 --> 00:33:11,930 >> 所以在看hello3 再次,主要会 638 00:33:11,930 --> 00:33:15,990 拿两个参数now-- INT ARGC, 命令行参数的个数, 639 00:33:15,990 --> 00:33:20,970 和字符串argv的支架,实际 输入字符串在命令行。 640 00:33:20,970 --> 00:33:26,560 所以我要改变这种状况 模板来反映这一事实。 641 00:33:26,560 --> 00:33:29,060 现在,只要你写 一个程序,如果你不 642 00:33:29,060 --> 00:33:33,720 需要采取的任何命令行 参数,那么就使用int主要(无效)。 643 00:33:33,720 --> 00:33:37,070 但是现在,当你写 命令行参数的程序,其中 644 00:33:37,070 --> 00:33:40,350 你会做的问题 设置two--所以现在你正在运行 645 00:33:40,350 --> 00:33:42,630 需要采取的方案 命令行参数, 646 00:33:42,630 --> 00:33:45,250 你需要有主要的这种形式。 647 00:33:45,250 --> 00:33:51,290 >> 所以这里 - 这是大用途 的命令行参数。 648 00:33:51,290 --> 00:33:54,100 所以打印的argv 1。 649 00:33:54,100 --> 00:33:59,180 好让我们编译 并运行此程序。 650 00:33:59,180 --> 00:34:02,440 让hello3。 651 00:34:02,440 --> 00:34:03,570 编译。 652 00:34:03,570 --> 00:34:06,870 点斜线hello3。 653 00:34:06,870 --> 00:34:08,920 而让我们说,“抢”。 654 00:34:08,920 --> 00:34:10,760 您好罗布。 655 00:34:10,760 --> 00:34:14,940 如果我说,“你好玛丽亚,”你好玛丽亚。 656 00:34:14,940 --> 00:34:15,719 您好玛丽亚。 657 00:34:15,719 --> 00:34:18,639 汉娜还称,“你好 玛丽亚,“因为我不是 658 00:34:18,639 --> 00:34:21,340 做我们的argv 2东西。 659 00:34:21,340 --> 00:34:22,590 ARGV 2现在是“汉娜”。 660 00:34:22,590 --> 00:34:25,030 ARGC将是3。 661 00:34:25,030 --> 00:34:27,735 如果我这样做? 662 00:34:27,735 --> 00:34:31,980 663 00:34:31,980 --> 00:34:34,679 所以,你好空。 664 00:34:34,679 --> 00:34:38,760 >> 他简要介绍了这一事实 ,从技术上,GetString的 665 00:34:38,760 --> 00:34:42,429 可能返回null,但我们会得到一个 很多成什么空实际上是。 666 00:34:42,429 --> 00:34:47,449 但把它当作的事 事实上,没有一般是不好的。 667 00:34:47,449 --> 00:34:50,179 我们做错了什么,如果 它的输出“Hello空。” 668 00:34:50,179 --> 00:34:52,179 其原因我们做了 有些不对劲is--好, 669 00:34:52,179 --> 00:34:56,179 当我跑点斜线hello3,ARGC为1。 670 00:34:56,179 --> 00:34:59,680 因此,这意味着argv的长度为1。 671 00:34:59,680 --> 00:35:05,110 如果数组的长度为1, 唯一有效的指标是零。 672 00:35:05,110 --> 00:35:08,550 所以,这里的argv 1是外 此数组的范围。 673 00:35:08,550 --> 00:35:13,410 这是类似于以前,当我试图 存储6阵列的端外。 674 00:35:13,410 --> 00:35:18,100 所以我想访问什么 在argv数之外, 675 00:35:18,100 --> 00:35:21,340 而我们得到空。 676 00:35:21,340 --> 00:35:24,360 >> 所以一个更好的版本 此,一种改进, 677 00:35:24,360 --> 00:35:27,010 明确检查ARGC。 678 00:35:27,010 --> 00:35:33,580 因此,如果ARGC等于2,这意味着我们跑 像点斜线hello3罗布。 679 00:35:33,580 --> 00:35:36,840 它会打印“你好抢。” 680 00:35:36,840 --> 00:35:39,850 如果ARGC不等于 2,那么它只是将 681 00:35:39,850 --> 00:35:42,560 忽略不管你把 在命令行参数 682 00:35:42,560 --> 00:35:43,960 作为命令行参数。 683 00:35:43,960 --> 00:35:47,168 或者,如果你没有把所有的一切,这是 只是要忽略这一点,只是说, 684 00:35:47,168 --> 00:35:47,960 “你好,你。” 685 00:35:47,960 --> 00:35:51,490 >> 因此,编制本。 686 00:35:51,490 --> 00:35:54,500 让hello4。 687 00:35:54,500 --> 00:35:56,790 而运行hello4。 688 00:35:56,790 --> 00:36:00,010 跑步是这样, 应该怎样打印? 689 00:36:00,010 --> 00:36:01,330 “你好,你。” 690 00:36:01,330 --> 00:36:02,810 你好,你。 691 00:36:02,810 --> 00:36:05,870 那么hello4罗布? 692 00:36:05,870 --> 00:36:06,950 “你好抢。” 693 00:36:06,950 --> 00:36:10,580 最后,你好罗布·玛丽亚· 仅仅是“你好,你”了, 694 00:36:10,580 --> 00:36:13,677 因为你没有真正进入 东西,它的预期。 695 00:36:13,677 --> 00:36:15,510 您输入了更多的名字 比它可以处理, 696 00:36:15,510 --> 00:36:19,500 所以它只是默认为 你好,你的行为。 697 00:36:19,500 --> 00:36:23,040 因此,在这个问题吗? 698 00:36:23,040 --> 00:36:26,290 或者命令行参数? 699 00:36:26,290 --> 00:36:28,690 >> 好了,纵观一 利用夫妇更多的例子 700 00:36:28,690 --> 00:36:34,230 命令行arguments--第一 我们的argv破折号1点温度。 701 00:36:34,230 --> 00:36:38,510 因此,意见白送什么 这个程序应该做的。 702 00:36:38,510 --> 00:36:42,460 但是请注意now-- for循环, 这匹配的精确模式 703 00:36:42,460 --> 00:36:43,390 我说了。 704 00:36:43,390 --> 00:36:46,240 我们恰好是 用n个ARGC代替。 705 00:36:46,240 --> 00:36:48,880 现在ARGC真的是n个。 706 00:36:48,880 --> 00:36:51,260 它的argv数组的长度。 707 00:36:51,260 --> 00:36:59,600 因此,在遍历ARGV 阵列的printf - 荷兰国际集团各argv的值。 708 00:36:59,600 --> 00:37:04,730 >> 所以,如果我做这个。 709 00:37:04,730 --> 00:37:08,232 请ARGV 1。 710 00:37:08,232 --> 00:37:09,940 它编译。 711 00:37:09,940 --> 00:37:11,620 点斜线的argv 1。 712 00:37:11,620 --> 00:37:15,530 就在运行这一点, 打印点斜线的argv 1 713 00:37:15,530 --> 00:37:18,500 因为这是唯一的命令行 argument--程序名称。 714 00:37:18,500 --> 00:37:22,080 总是会有在least-- 的argc不能小于1, 715 00:37:22,080 --> 00:37:25,910 因为总会有至少 是程序名运行。 716 00:37:25,910 --> 00:37:32,040 所以argv的1罗布将打印的argv 1 然后在新行“抢”。 717 00:37:32,040 --> 00:37:36,350 >> 因此在第一次迭代 此循环中,i是0。 718 00:37:36,350 --> 00:37:39,090 ARGV 0是程序名。 719 00:37:39,090 --> 00:37:40,010 点斜线的argv 1。 720 00:37:40,010 --> 00:37:43,770 然后的argv 1是我第一次 命令行参数,这是罗布。 721 00:37:43,770 --> 00:37:45,920 在这一点上,我们是平等的像argc。 722 00:37:45,920 --> 00:37:48,210 我们跳出循环,我们就大功告成了。 723 00:37:48,210 --> 00:37:53,940 因此,这将适用于任意 命令行参数的数目。 724 00:37:53,940 --> 00:37:58,550 请注意,它打印的argv 0,argv的 1,ARGV 2,ARGV 3,argv的4。 725 00:37:58,550 --> 00:38:00,150 而且没有ARGV 5。 726 00:38:00,150 --> 00:38:01,460 的argc等于5。 727 00:38:01,460 --> 00:38:06,960 因此,在argc--在i等于5, 我们跳出循环。 728 00:38:06,960 --> 00:38:07,950 行。 729 00:38:07,950 --> 00:38:11,315 因此,我们之前的问题上 看一个更复杂的例子? 730 00:38:11,315 --> 00:38:14,190 731 00:38:14,190 --> 00:38:16,860 >> 所以ARGV 2。 732 00:38:16,860 --> 00:38:17,830 好吧。 733 00:38:17,830 --> 00:38:20,610 因此,我们仍然打印 命令行参数。 734 00:38:20,610 --> 00:38:23,170 但现在发现,我们有 一个嵌套的循环。 735 00:38:23,170 --> 00:38:24,670 那么,什么是该做的? 736 00:38:24,670 --> 00:38:28,430 因此,第一个循环是做 正是以前一样。 737 00:38:28,430 --> 00:38:30,950 我们还在遍历 每一个命令行参数, 738 00:38:30,950 --> 00:38:34,260 但现在这第二loop--我们已经 之前也看到了这样的事情。 739 00:38:34,260 --> 00:38:38,600 当他被遍历 Zamyla打印出Z-A-M-Y-L-A。 740 00:38:38,600 --> 00:38:44,816 所以这第二个循环对于int j为 0,n等于argv的支架我的strlen的。 741 00:38:44,816 --> 00:38:49,170 >> 因此,让我们首先想到的 the--让我们穿行。 742 00:38:49,170 --> 00:38:53,560 让我们思考什么电脑会 怎么做,如果我跑这个项目刚才点 743 00:38:53,560 --> 00:38:56,030 斜线的argv冲刺2。 744 00:38:56,030 --> 00:39:03,590 所以,如果我跑这个代码,然后 的argc将是等于1。 745 00:39:03,590 --> 00:39:07,050 和字符串argv--这里只有 将是一个索引argv中, 746 00:39:07,050 --> 00:39:12,370 而这将是等于点 斜线的argv 2--程序名称。 747 00:39:12,370 --> 00:39:19,170 >> 好了,现在我等于0,小于我 1,我加再加对于int j为0, 748 00:39:19,170 --> 00:39:23,880 n等于argv的支架0 strlen的,所以在 此循环的第一次迭代。 ARGV 749 00:39:23,880 --> 00:39:27,250 支架0点斜线的argv 2。 750 00:39:27,250 --> 00:39:29,320 那么,什么是该字符串的长度? 751 00:39:29,320 --> 00:39:32,480 好了,点斜线A-R-G-V仪表板2。 752 00:39:32,480 --> 00:39:35,020 这样的strlen的,这将是8。 753 00:39:35,020 --> 00:39:37,500 所以j为0,n等于8。 754 00:39:37,500 --> 00:39:39,530 只要j是小于8,J ++。 755 00:39:39,530 --> 00:39:44,080 有了这样的,我们要成为 打印单个字符,它 756 00:39:44,080 --> 00:39:47,350 是argv的支架我括号学家 757 00:39:47,350 --> 00:39:49,826 >> 因此,只有我是零。 758 00:39:49,826 --> 00:39:51,700 我们仍然只有一个 命令行参数。 759 00:39:51,700 --> 00:39:53,890 在这第一次迭代 的for循环,我们 760 00:39:53,890 --> 00:39:56,950 将要印刷 argv的支架0支架0。 761 00:39:56,950 --> 00:39:58,325 然后j被要递增。 762 00:39:58,325 --> 00:40:01,650 而且我们要打印 argv的支架0支架1。 763 00:40:01,650 --> 00:40:04,150 然后argv的支架0支架2。 764 00:40:04,150 --> 00:40:09,030 >> 所以这是我们第一次遇到 多维数组。 765 00:40:09,030 --> 00:40:12,770 还记得前面我说的 这ARGV在技术上 766 00:40:12,770 --> 00:40:15,950 字符的数组的数组。 767 00:40:15,950 --> 00:40:24,360 所以在这里,如果我说的一样 字符串s等于argv的支架我, 768 00:40:24,360 --> 00:40:29,590 然后我说,S支架Ĵ,这 将完成同样的事情。 769 00:40:29,590 --> 00:40:31,960 现在,你已经看过小号支架学家 770 00:40:31,960 --> 00:40:36,680 这只是访问的第j个 字符该字符串。 771 00:40:36,680 --> 00:40:48,010 因此,与这一点,我们所得到的 第i个的argv的第j个字符。 772 00:40:48,010 --> 00:40:51,450 >> 那么,这应该最终输出? 773 00:40:51,450 --> 00:40:53,210 做的argv 2。 774 00:40:53,210 --> 00:40:54,730 它编译。 775 00:40:54,730 --> 00:40:56,340 点斜线的argv 2。 776 00:40:56,340 --> 00:41:03,790 “罗布·玛丽亚·汉娜,” 并给我们一些空间。 777 00:41:03,790 --> 00:41:07,050 所以我们看到,这是输出 点上了自己的线,斜线 778 00:41:07,050 --> 00:41:08,920 在自己的线路和自己的行。 779 00:41:08,920 --> 00:41:11,260 它打印出的每个 个性 780 00:41:11,260 --> 00:41:12,950 每个命令行参数。 781 00:41:12,950 --> 00:41:15,960 然后在它们之间, 因为这个新线 782 00:41:15,960 --> 00:41:19,380 我们要打印到这里,在 他们之间它会打印新的生产线。 783 00:41:19,380 --> 00:41:24,540 >> 因此,这是类似于 以前的argv破折号1, 784 00:41:24,540 --> 00:41:26,459 它印在每个 命令行参数, 785 00:41:26,459 --> 00:41:28,500 但现在我们要打印 命令行参数 786 00:41:28,500 --> 00:41:31,950 然后通过每个迭代 每一个命令行参数的字符 787 00:41:31,950 --> 00:41:35,400 得到这个输出。 788 00:41:35,400 --> 00:41:36,870 好不好? 789 00:41:36,870 --> 00:41:40,570 因此,在这个问题吗? 790 00:41:40,570 --> 00:41:45,130 >> 有一点要注意的是, 命令行arguments-- 791 00:41:45,130 --> 00:41:49,990 所以它们之间用空格分隔为 你自然会期望他们。 792 00:41:49,990 --> 00:41:53,050 这样一个串可具有在它的空间。 793 00:41:53,050 --> 00:41:57,380 这不是超级重要,但如果我 希望第三个命令行参数 794 00:41:57,380 --> 00:42:01,226 有一个空间,然后我 可以说这样的事情。 795 00:42:01,226 --> 00:42:04,470 796 00:42:04,470 --> 00:42:05,550 好不好? 797 00:42:05,550 --> 00:42:12,190 所以这个现在还只有三个 命令行arguments--以及4。 798 00:42:12,190 --> 00:42:17,620 点斜线的argv冲刺2,抢, 玛丽亚和汉娜彭博。 799 00:42:17,620 --> 00:42:18,320 行。 800 00:42:18,320 --> 00:42:19,310 在这个问题? 801 00:42:19,310 --> 00:42:22,700 802 00:42:22,700 --> 00:42:24,894 >> 没有什么特别的 有关空格字符。 803 00:42:24,894 --> 00:42:27,810 这恰好是该 命令行把空格字符 804 00:42:27,810 --> 00:42:29,226 如何你分开每一个参数。 805 00:42:29,226 --> 00:42:32,048 806 00:42:32,048 --> 00:42:33,000 好吧。 807 00:42:33,000 --> 00:42:39,950 那么接下来的问题集 two--你将是 808 00:42:39,950 --> 00:42:43,240 看着密钥加密。 809 00:42:43,240 --> 00:42:47,700 因此,类似于在实施例 我们从圣诞故事看到, 810 00:42:47,700 --> 00:42:52,840 你将要实施的一些 即,给定的消息的算法, 811 00:42:52,840 --> 00:42:55,560 你要能 该消息加密 812 00:42:55,560 --> 00:42:58,730 只有具有这个秘密的人 键,用解码器环, 813 00:42:58,730 --> 00:43:01,090 应该能够进行解密。 814 00:43:01,090 --> 00:43:04,839 >> 所以这是标准版。 815 00:43:04,839 --> 00:43:07,130 你会被执行 两个不同的版本。 816 00:43:07,130 --> 00:43:09,620 如果你碰巧看看 在现在的黑客版 - 的, 817 00:43:09,620 --> 00:43:12,600 我们打​​算给 你喜欢这样的字符串, 818 00:43:12,600 --> 00:43:15,240 它表示一个加密口令。 819 00:43:15,240 --> 00:43:19,990 所以,你的目标是要弄清楚 解密的口令是什么。 820 00:43:19,990 --> 00:43:26,950 现在,这其实是多么的密码 存储在很多计算机, 821 00:43:26,950 --> 00:43:31,290 它只是存储此 随机字符串。 822 00:43:31,290 --> 00:43:34,440 你必须弄清楚如何获得 从这个随机字符串 823 00:43:34,440 --> 00:43:36,140 什么原始密码了。 824 00:43:36,140 --> 00:43:39,060 825 00:43:39,060 --> 00:43:43,290 >> 最后,在此之后 问题集,你应该 826 00:43:43,290 --> 00:43:46,100 能够理解这是什么意思。 827 00:43:46,100 --> 00:43:51,650 所以,您将学习如何解密 这种随机的字符串。 828 00:43:51,650 --> 00:43:56,390 同样,如果您从周记 0,你可能已经看到了这个网址。 829 00:43:56,390 --> 00:44:00,210 而且你应该能 最终解密此。 830 00:44:00,210 --> 00:44:04,810 你可能不会开心,当你 解密并点击链接。 831 00:44:04,810 --> 00:44:05,700 好吧。 832 00:44:05,700 --> 00:44:06,591 以上就是今天。 833 00:44:06,591 --> 00:44:12,095 所以,看到你下周! 834 00:44:12,095 --> 00:44:18,315 >> [电子音乐播放] 835 00:44:18,315 --> 00:47:15,619