1 00:00:00,000 --> 00:00:11,242 >> [عزف الموسيقى] 2 00:00:11,242 --> 00:00:16,630 >> DAVID J. مالان: حسنا هذا هو CS50 وهذا هو بداية الأسبوع الخمسة. 3 00:00:16,630 --> 00:00:21,480 حتى اليوم، تحت الوسائد مقعدك، أنك لن تجد أي شيء. 4 00:00:21,480 --> 00:00:24,790 ولكن أعلاه، يجب أن تجد هذه، رمزية صغيرة من تقديرنا ل 5 00:00:24,790 --> 00:00:26,970 كل العمل الذي كنت وضعت في لعبة من خمسة عشر. 6 00:00:26,970 --> 00:00:30,290 ببساطة إزالة الدائرة قليلا على السفلي لبدء اللعب لل 7 00:00:30,290 --> 00:00:31,680 ما تبقى من الطبقة. 8 00:00:31,680 --> 00:00:38,930 >> حتى أذكر ذلك، أو تعرف أن المشكلة تعيين أربعة، الذي خرج في نهاية هذا الاسبوع، 9 00:00:38,930 --> 00:00:40,340 ينطوي الكتابة لعبة أخرى. 10 00:00:40,340 --> 00:00:43,740 ولكن هذه المرة كان ينطوي استخدام الفعلية واجهة المستخدم الرسومية، وليس 11 00:00:43,740 --> 00:00:46,310 واجهة النصية مثل وكانت مباراة من خمسة عشر. 12 00:00:46,310 --> 00:00:50,210 واللعبة التي تنتظركم، إذا كنت لم نشهد حتى الآن هذه المقبل، 13 00:00:50,210 --> 00:00:52,310 يبدو شيئا قليلا من هذا القبيل. 14 00:00:52,310 --> 00:00:55,170 انا ذاهب للذهاب الى محطة بلدي نافذة هنا في GDB. 15 00:00:55,170 --> 00:00:58,600 وانا ذاهب الى المضي قدما وتشغيل الحل الموظفين، والتي يمكنك الوصول إليها 16 00:00:58,600 --> 00:01:01,010 بعد تشغيل التحديث 50 كالمعتاد. 17 00:01:01,010 --> 00:01:04,090 >> ولكن انا ذاهب لوضعها موضع قليلا وضع سرية، بيضة عيد الفصح قليلا، 18 00:01:04,090 --> 00:01:08,480 ما يسمى وضع الله، وضع الله في argv1. 19 00:01:08,480 --> 00:01:12,920 ولدي لمتابعة الاتجاهات بلدي، تشغيله في بلدي 20 00:01:12,920 --> 00:01:14,220 المشكلة الدليل تعيين. 21 00:01:14,220 --> 00:01:19,190 حتى الآن لرؤية نسخة كاملة لعبة الهروب. 22 00:01:19,190 --> 00:01:21,090 في الواقع، وهذا هو وضع لا اليدين. 23 00:01:21,090 --> 00:01:24,850 لذلك في الواقع - 24 00:01:24,850 --> 00:01:26,470 أبهر على الرغم من أنك قد تكون - 25 00:01:26,470 --> 00:01:30,850 تافهة جدا لتنفيذ وضع الله في الاختراق، على عكس لعبة الخمسة عشر، 26 00:01:30,850 --> 00:01:33,590 والتي قد تعالج بعض منكم للطبعة القراصنة. 27 00:01:33,590 --> 00:01:37,890 >> في اندلاع يكفي في الله الوضع ببساطة يفعل ما، 28 00:01:37,890 --> 00:01:41,220 حدسي مع مجداف؟ 29 00:01:41,220 --> 00:01:45,630 فقط جعله يساوي مهما كانت الوضع الأفقي هو من الإستحواذ على الكرة. 30 00:01:45,630 --> 00:01:49,220 وطالما كنت تفعل هذا في ببراعة مع الكرة تتحرك هذه اللعبة سوف 31 00:01:49,220 --> 00:01:53,100 أبدا، من أي وقت مضى، ويغيب أي وقت مضى على الكرة وعليك أن تفوز في كل مرة. 32 00:01:53,100 --> 00:01:55,430 >> ولكن في الطبعة القراصنة هذا الأسبوع هناك أكثر من وضع الله فقط. 33 00:01:55,430 --> 00:01:56,720 هناك عدد من الميزات الأخرى. 34 00:01:56,720 --> 00:01:58,140 فيما بينها، وأشعة الليزر. 35 00:01:58,140 --> 00:02:01,070 بحيث إذا كنت حقا الحصول على الصبر لك يمكن أن تبدأ اسقاط الطوب 36 00:02:01,070 --> 00:02:02,120 وعدد قليل من الآخرين. 37 00:02:02,120 --> 00:02:04,560 وبالنسبة لأولئك منكم الذين ترغب في معايرة قياسية مقابل القراصنة 38 00:02:04,560 --> 00:02:08,750 طبعة، أستطيع أن أرى أن هذا الأسبوع طبعة القراصنة هو عمدا 39 00:02:08,750 --> 00:02:12,830 أكثر قليلا قابلة للتنفيذ، مثلا، من الله كان الوضع مع لعبة من خمسة عشر. 40 00:02:12,830 --> 00:02:15,300 >> حتى إذا كنت تبحث عن امتداد و كنت تبحث عن بعض المرح إضافية 41 00:02:15,300 --> 00:02:18,400 ميزات لا الغوص في إذا من الفائدة. 42 00:02:18,400 --> 00:02:21,280 الآن أكثر من الناحية العملية، واسمحوا لي أن أشير من شيء واحد كذلك. 43 00:02:21,280 --> 00:02:24,780 GDB، والتي البعض منكم قد لا يكون حتى الآن لمست شخصيا، التي على ما يرام. 44 00:02:24,780 --> 00:02:28,530 ولكن الآن هو حقا الوقت لتعتاد لهذا ومريحة مع هذه الأداة 45 00:02:28,530 --> 00:02:31,510 لأنه سيجعل حياتكم أسهل بكثير، حقا. 46 00:02:31,510 --> 00:02:34,900 >> محاضرة في روب على GDB زوجين من قبل أسابيع، وأذكر 47 00:02:34,900 --> 00:02:36,810 أن GDB هو المصحح. 48 00:02:36,810 --> 00:02:41,230 انها الأداة التي تتيح لك تشغيل الخاص البرنامج ولكن تشغيله خطوة بخطوة، خط 49 00:02:41,230 --> 00:02:45,680 سطرا، بحيث يمكنك كزة حولها، حتى يتسنى لك رؤية الأشياء يحدث، لذلك 50 00:02:45,680 --> 00:02:47,310 يمكنك طباعة قيم المتغيرات. 51 00:02:47,310 --> 00:02:50,580 وباختصار، فإنه يوفر لك أكثر من ذلك بكثير قوة من printDef لا. 52 00:02:50,580 --> 00:02:52,900 >> الآن باعتراف الجميع، واجهة هي غامضة جدا. 53 00:02:52,900 --> 00:02:55,180 واجهة النصية بالأبيض والأسود بالنسبة للجزء الاكبر. 54 00:02:55,180 --> 00:02:57,400 الأوامر هي صعبة نوعا ما لنتذكر في البداية. 55 00:02:57,400 --> 00:03:01,230 ولكن على الرغم من ان الامر قد يستغرق لك نصف ساعة، ساعة، لوضع ذلك مقدما 56 00:03:01,230 --> 00:03:02,940 استثمار الوقت في ذلك، ثق بي. 57 00:03:02,940 --> 00:03:06,440 بالتأكيد بنهاية الفصل الدراسي سيوفر كنت أمر من حجم أكثر 58 00:03:06,440 --> 00:03:07,600 الوقت من ذلك. 59 00:03:07,600 --> 00:03:09,200 >> حتى في الغوص فيها أوائل الأسبوع 60 00:03:09,200 --> 00:03:13,200 وفيما يتعلق اندلاع، أعرف أنك يمكن القيام بذلك طالما لديك 61 00:03:13,200 --> 00:03:18,230 رمز أو توزيع التعليمات البرمجية الخاصة بك في التقدم في الدليل Pst4 الخاص بك. 62 00:03:18,230 --> 00:03:21,680 تعلم أنه يمكنك تشغيل جدب. / الاختراق. 63 00:03:21,680 --> 00:03:23,490 >> هذا هو ذاهب لفتح نافذة مثل هذا. 64 00:03:23,490 --> 00:03:25,530 اسمحوا لي أن أقدم نفسي أكثر من نافذة الصالة. 65 00:03:25,530 --> 00:03:27,770 ثم ما انا ذاهب الى المضي قدما و لا، انها ليست مجرد تشغيله. 66 00:03:27,770 --> 00:03:30,690 انا ذاهب الى تعيين أول نقطة فاصل أذكر، والذي يسمح لك وقفة 67 00:03:30,690 --> 00:03:32,500 التنفيذ في مكان معين. 68 00:03:32,500 --> 00:03:35,750 >> فقط لابقاء الامور بسيطة انا ذاهب لكسر في سطر واحد فقط عن طريق كتابة 69 00:03:35,750 --> 00:03:37,000 رقم واحد. 70 00:03:37,000 --> 00:03:40,080 71 00:03:40,080 --> 00:03:43,250 اسمحوا لي في الواقع إعادة فتح هذه النافذة لأنها الحصول على 72 00:03:43,250 --> 00:03:45,700 صغيرة قليلا هناك. 73 00:03:45,700 --> 00:03:53,270 ذلك ما أنا الآن بصدد القيام به هنا هو إذا كنت تفتح نافذة الصالة بلدي. 74 00:03:53,270 --> 00:03:53,910 هيا، هناك نذهب. 75 00:03:53,910 --> 00:03:59,850 >> حتى الآن إذا أعود إلى المربع المنسدل، Pst4 والمدى جدب. / اندلاع دخول، إشعار 76 00:03:59,850 --> 00:04:02,600 انا ذاهب الى كسر واحد لتعيين نقطة فاصل في سطر واحد. 77 00:04:02,600 --> 00:04:04,840 والآن انا ذاهب للذهاب قدما ونوع التشغيل. 78 00:04:04,840 --> 00:04:07,370 وعندما أفعل، لاحظ شيئا يبدو أن يحدث. 79 00:04:07,370 --> 00:04:08,120 >> ليس هناك ما يصل البوب. 80 00:04:08,120 --> 00:04:09,790 ليس هناك الرسومية واجهة المستخدم حتى الآن. 81 00:04:09,790 --> 00:04:13,340 ولكن هذا مفهوم لأن أنا حرفيا في سطر واحد في برنامجي. 82 00:04:13,340 --> 00:04:17,110 وتلاحظ أن تحال لقد سريع، على وجه التحديد الآن إلى 62، وذلك لأن جميع 83 00:04:17,110 --> 00:04:20,600 الاشياء في الجزء العلوي من هذا الملف أشياء مثل التعليقات والثوابت و 84 00:04:20,600 --> 00:04:22,460 الاشياء رتيبا في الوقت الراهن. 85 00:04:22,460 --> 00:04:25,840 >> حتى الآن أنا داخل الرئيسي، يبدو في خط 62. 86 00:04:25,840 --> 00:04:27,960 وهذا هو مجرد توزيع رمز، التذكير. 87 00:04:27,960 --> 00:04:33,810 إذا قمت بفتح هذا الأمر من خلال الذهاب، وبالمثل، في بلدي دليل قطرة مربع في Pst4، 88 00:04:33,810 --> 00:04:35,450 في breakout.c. 89 00:04:35,450 --> 00:04:40,670 وإذا كنت انتقل لأسفل وأسفل وأسفل، واسمحوا لي أن المضي قدما وتشغيل 90 00:04:40,670 --> 00:04:44,990 أرقام الأسطر بلدي. 91 00:04:44,990 --> 00:04:50,300 >> ما سوف نرى، إذا كنت انزل الى خط 62، هو بالضبط الخط الذي 92 00:04:50,300 --> 00:04:50,910 لقد توقفت على. 93 00:04:50,910 --> 00:04:53,720 حتى هذا الخط هنا، 62، هو حيث أننا على وشك أن يكون. 94 00:04:53,720 --> 00:04:57,470 وحتى الآن في GDB، إذا ذهبت إلى الأمام ونوع الآن المقبل، أدخل انه سيكون ل 95 00:04:57,470 --> 00:04:58,450 تنفيذ هذا الخط. 96 00:04:58,450 --> 00:05:00,610 وفويلا، لدينا ما يسمى ز النافذة. 97 00:05:00,610 --> 00:05:02,800 إذا غير مألوف مع ما GWindow هو، لا داعي للقلق. 98 00:05:02,800 --> 00:05:05,740 سوف أعرض لكم لالمواصفات، كما فضلا عن عدد من أشرطة الفيديو تجول 99 00:05:05,740 --> 00:05:06,830 جزءا لا يتجزأ من المواصفات. 100 00:05:06,830 --> 00:05:08,610 >> ولكن الآن دعونا جعل هذا قليلا أكثر إثارة للاهتمام. 101 00:05:08,610 --> 00:05:10,960 اسمحوا لي أن تحرك هذا الإطار على إلى الجانب قليلا. 102 00:05:10,960 --> 00:05:13,480 اسمحوا لي أن النافذة قليلا أكبر حتى أستطيع أن أرى أكثر من ذلك. 103 00:05:13,480 --> 00:05:16,140 >> والآن اسمحوا لي أن المضي قدما والقيام به بعد ذلك مرة أخرى. 104 00:05:16,140 --> 00:05:17,550 وهناك الطوب بلدي. 105 00:05:17,550 --> 00:05:20,490 إذا كنت اكتب القادمة مرة أخرى الآن أرى الكرة. 106 00:05:20,490 --> 00:05:23,520 وإذا كنت اكتب القادمة مرة أخرى الآن أرى مجداف. 107 00:05:23,520 --> 00:05:26,690 >> ولحسن الحظ هذا ليس gedit تتعاون حقا تبين لي 108 00:05:26,690 --> 00:05:27,660 كل شيء أريد. 109 00:05:27,660 --> 00:05:30,820 ولكن الآن إذا كنت تفعل مرة أخرى القادم، مرة أخرى القادم، أنا فقط 110 00:05:30,820 --> 00:05:32,260 يعلن بعض المتغيرات. 111 00:05:32,260 --> 00:05:34,750 وأنا يمكن طباعة أي واحد من هؤلاء الرجال خارج. 112 00:05:34,750 --> 00:05:37,170 الطوب الطباعة، يطبع حياة. 113 00:05:37,170 --> 00:05:39,910 >> والآن إذا ما زلت تفعل المقبل، لاحظ أن سأكون 114 00:05:39,910 --> 00:05:40,870 داخل تلك الحلقة. 115 00:05:40,870 --> 00:05:43,380 لكن رمز هو الذهاب الى تنفيذ تماما كما كنت تتوقع. 116 00:05:43,380 --> 00:05:45,810 لذلك عندما ضرب هذه الوظيفة، انتظر اضغط ل، انها تنوي القيام به 117 00:05:45,810 --> 00:05:46,830 حرفيا ذلك. 118 00:05:46,830 --> 00:05:48,870 هكذا بدا لي أن فقدت السيطرة خلال البرنامج. 119 00:05:48,870 --> 00:05:50,480 >> GDB لا إعطائي موجه آخر. 120 00:05:50,480 --> 00:05:51,500 ولكن لا داعي للقلق. 121 00:05:51,500 --> 00:05:53,720 انتقل إلى لعبي، انقر فوق مكان ما. 122 00:05:53,720 --> 00:05:56,270 >> وفويلا، والآن تشرع في خط 86. 123 00:05:56,270 --> 00:05:59,460 ذلك مرة أخرى، انها لا تقدر بثمن، في نهاية المطاف، لتصحيح المشاكل. 124 00:05:59,460 --> 00:06:03,050 لأنه يمكنك من خلال خطوة حرفيا التعليمات البرمجية الخاصة بك، وأشياء من الطباعة والكثير، 125 00:06:03,050 --> 00:06:03,640 أكثر من هذا. 126 00:06:03,640 --> 00:06:07,210 لكنه الآن، تلك الأدوات وحده يجب أن تحصل بعيدا جدا. 127 00:06:07,210 --> 00:06:10,050 >> لذلك نحن، بالطبع، مع نظرة في الرسومات الآن، فجأة. 128 00:06:10,050 --> 00:06:12,350 والآن عالمنا يحصل قليلا أكثر إثارة للاهتمام. 129 00:06:12,350 --> 00:06:15,680 وأنت تعرف، ربما، من بعض أشرطة الفيديو على الانترنت أن لدينا هذه 130 00:06:15,680 --> 00:06:18,280 السراويل التي كنت قد تم مشاهدة كجزء من مجموعات المشكلة. 131 00:06:18,280 --> 00:06:20,460 >> ولقد تم اطلاق النار، عمدا، على خلفية بيضاء. 132 00:06:20,460 --> 00:06:23,380 وبعض منهم لديهم تعليم الزملاء رسم بعض النص على 133 00:06:23,380 --> 00:06:25,490 الشاشة وهذا ما مضافين على الجانب منها. 134 00:06:25,490 --> 00:06:27,760 ولكن بالطبع، هذا ليس كل ما مثيرة للاهتمام في العالم الحقيقي. 135 00:06:27,760 --> 00:06:30,520 هذا هو مجرد قاعة محاضرات مع شاشة بيضاء كبيرة وخلفية. 136 00:06:30,520 --> 00:06:33,330 ولدينا نوع مدهش فريق الإنتاج من يجعل كل شيء تبدو جميلة 137 00:06:33,330 --> 00:06:36,620 بعد وقوعها من خلال الاقتصاص من أو تتراكب أي شيء 138 00:06:36,620 --> 00:06:37,840 نفعله أو لا تريد. 139 00:06:37,840 --> 00:06:41,560 >> الآن فقط لتحفيز هذا الاسبوع و حقا، حيث يمكنك الذهاب، في نهاية المطاف، 140 00:06:41,560 --> 00:06:42,560 مع علوم الكمبيوتر. 141 00:06:42,560 --> 00:06:44,260 ليس فقط مشكلة بعد تعيين أربعة. 142 00:06:44,260 --> 00:06:48,240 ولكن بعد دورة أخرى أو كامل المنهج إنه لأمر مدهش ما يمكن 143 00:06:48,240 --> 00:06:51,090 تفعل في هذه الأيام من حيث رسومات على وجه الخصوص. 144 00:06:51,090 --> 00:06:53,440 >> قد شهدت بعض منكم هذا تتدفق في جميع أنحاء الإنترنت. 145 00:06:53,440 --> 00:06:56,240 لكنني اعتقدت أن تظهر لك، لمجرد بضع دقائق، لمحة عما 146 00:06:56,240 --> 00:07:01,890 تكنولوجيا الكمبيوتر وما CGI، رسومات الحاسوب يمكن القيام به في هذه الأيام 147 00:07:01,890 --> 00:07:04,510 مع أغنية مألوفة وربما الفيلم. 148 00:07:04,510 --> 00:07:05,760 >> [MUSIC - LANA DEL RAY، "شابة وجميلة] 149 00:07:05,760 --> 00:10:50,270 150 00:10:50,270 --> 00:10:52,470 >> سرور 1: انها قليلا مذهلة، ربما، فقط كيف 151 00:10:52,470 --> 00:10:52,857 منتشرة في كل مكان - 152 00:10:52,857 --> 00:10:57,040 >> [تصفيق] 153 00:10:57,040 --> 00:10:59,230 >> سرور 1: أنا تحميل فقط. 154 00:10:59,230 --> 00:11:02,920 ولكن إنه لأمر مدهش حقا، وأعتقد، فقط كيف البرمجيات ورمز منتشرة في كل مكان و 155 00:11:02,920 --> 00:11:04,230 أدوات مثل هذه هي في الواقع. 156 00:11:04,230 --> 00:11:07,685 ذلك أن طعم الاتجاه حيث يمكنك الذهاب. 157 00:11:07,685 --> 00:11:10,620 أوه، لا أكثر الأجهزة اليوم. 158 00:11:10,620 --> 00:11:14,640 حسنا، هذا الواقع المأساوي توقيت بالنظر إلى النقطة أنا فقط حاولت أن تجعل. 159 00:11:14,640 --> 00:11:18,670 >> كل الحق، لذلك دعونا إطلاق الانصهار مرة أخرى. 160 00:11:18,670 --> 00:11:20,800 أذكر لي في وقت لاحق. 161 00:11:20,800 --> 00:11:24,190 كل الحق، ويجب أن قد حصلت على الكتابة بوصفها جانبا إذا لم تحصل على 162 00:11:24,190 --> 00:11:25,460 إشعار من هذا القبيل. 163 00:11:25,460 --> 00:11:29,940 كل الحق، لذلك أذكر أنه في الأسبوع الماضي بدأنا في قشر العودة هذه 164 00:11:29,940 --> 00:11:31,380 عرفت فيما بعد باسم السلسلة. 165 00:11:31,380 --> 00:11:34,700 >> وتشير سلسلة نوع بيانات هذا أعلن في المكتبة CS50. 166 00:11:34,700 --> 00:11:37,740 وانها جزء من عجلات التدريب التي من شأنها أن تبدأ الآن للاقلاع. 167 00:11:37,740 --> 00:11:41,280 كان مفهوما مفيدا في وقت مبكر. 168 00:11:41,280 --> 00:11:43,750 ولكن الآن انه سيكون للحصول على مزيد من مثيرة للاهتمام وأكثر قوة ل 169 00:11:43,750 --> 00:11:48,330 نرى في الواقع أن تحت غطاء محرك السيارة، هو مجرد ما، لم قال سلسلة نحن؟ 170 00:11:48,330 --> 00:11:50,500 >> نعم، لذلك هو ما يسمى تشار *. 171 00:11:50,500 --> 00:11:53,860 و* هناك يدل على أن هناك نوعا من عنوان المعنية. 172 00:11:53,860 --> 00:11:58,690 وهكذا عندما تقول شار * تقصد فقط متغير نوع البيانات الذي هو 173 00:11:58,690 --> 00:11:59,290 الماوس للالآن. 174 00:11:59,290 --> 00:12:01,770 حقيقة أن هناك نجم هناك يعني فقط ان كنت إعلان 175 00:12:01,770 --> 00:12:03,020 ما يسمى المؤشر. 176 00:12:03,020 --> 00:12:06,220 وهذا المؤشر هو الذهاب الى ما يبدو تخزين عنوان، من 177 00:12:06,220 --> 00:12:07,810 بالطبع، شار. 178 00:12:07,810 --> 00:12:08,960 >> الآن لماذا لا يعقل هذا؟ 179 00:12:08,960 --> 00:12:11,200 حسنا، ما هو سلسلة تحت غطاء محرك السيارة؟ 180 00:12:11,200 --> 00:12:15,130 حسنا، لبعض الوقت كنا قائلا أن سلسلة تحت غطاء محرك السيارة هو 181 00:12:15,130 --> 00:12:18,460 مجرد ح ه-L-L-O، على سبيل المثال. 182 00:12:18,460 --> 00:12:21,585 >> ولكن تحدثنا عن هذا الأمر كونها، أساسا، صفيف. 183 00:12:21,585 --> 00:12:25,410 ومجموعة سيبدو قليلا ثم أشبه هذا، مع كل من هذه 184 00:12:25,410 --> 00:12:26,460 تناول لدغة. 185 00:12:26,460 --> 00:12:28,710 ثم قلنا أن هناك شيء خاص هنا مرة أخرى، و 186 00:12:28,710 --> 00:12:31,270 0 مائل، أو فاصل فارغة. 187 00:12:31,270 --> 00:12:35,230 >> لذلك كل هذا الوقت، وهذا هنا وكانت سلسلة. 188 00:12:35,230 --> 00:12:38,320 ولكن في الحقيقة، هو سلسلة في الواقع عنوان. 189 00:12:38,320 --> 00:12:43,210 وعناوينهم، كما سنرى، وغالبا ما تكون مسبوقة ب 0X قبل الاتفاقية. 190 00:12:43,210 --> 00:12:44,540 ماذا 0X دلالة؟ 191 00:12:44,540 --> 00:12:45,970 لا أحد يعرف؟ 192 00:12:45,970 --> 00:12:47,320 >> لذلك يعني فقط ست عشري. 193 00:12:47,320 --> 00:12:52,360 لذلك قد أذكر، في الواقع، من توقيت المحيط الهادي 1، وأعتقد، واحدة من الاحماء 194 00:12:52,360 --> 00:12:55,740 الأسئلة حول الواقع تدوين ست عشري بالإضافة إلى 195 00:12:55,740 --> 00:12:57,100 ثنائي وعشري. 196 00:12:57,100 --> 00:13:00,460 والدافع هنا هو أن مع ست عشري لديك 16 197 00:13:00,460 --> 00:13:01,770 الأرقام تحت تصرفكم. 198 00:13:01,770 --> 00:13:07,900 0، 1، 2، 3، 4، 5، 6، 7، 8، 9، يليه من قبل أ، ب، ج، د، ه، و. 199 00:13:07,900 --> 00:13:10,430 >> وإذا كنت تعول جميع أولئك تصل، تحصل على ما مجموعه 16. 200 00:13:10,430 --> 00:13:13,200 لذلك هذا هو على النقيض من العشرية، حيث لدينا 10 201 00:13:13,200 --> 00:13:14,690 أرقام، 0 إلى تسعة. 202 00:13:14,690 --> 00:13:17,750 انها في المقابل مع ثنائي حيث لدينا فقط 0 و 1. 203 00:13:17,750 --> 00:13:21,450 >> ولكن في نهاية اليوم يمكنك فقط تمثل نفس الأرقام، ولكن 204 00:13:21,450 --> 00:13:22,500 بشكل مختلف إلى حد ما. 205 00:13:22,500 --> 00:13:25,840 وست عشري هو شائع لأنه كما اتضح - وسنرى هذا 206 00:13:25,840 --> 00:13:28,790 في وقت لاحق بالطبع - حتى عندما نحصل على لبرمجة الويب في سياق 207 00:13:28,790 --> 00:13:32,100 وHTML اللون رموز، ست عشري هو لطيف. 208 00:13:32,100 --> 00:13:36,390 لأن كل رقم، تبين، يمثل أربعة بت تماما. 209 00:13:36,390 --> 00:13:39,280 لذلك مجرد نوع من يصطف بشكل جيد كما سنرى في نهاية المطاف. 210 00:13:39,280 --> 00:13:44,720 ولذلك فإن هذا قد يكون Ox123 أو شيء من هذا القبيل، تدل عنوان 123 211 00:13:44,720 --> 00:13:47,050 في مكان ما داخل بلدي ذاكرة الكمبيوتر. 212 00:13:47,050 --> 00:13:50,600 >> ولكن بطبيعة الحال، بعض المشاكل تنشأ بسبب هذا الكامنة 213 00:13:50,600 --> 00:13:51,520 التنفيذ. 214 00:13:51,520 --> 00:13:55,930 وأذكر أنني أخذت طعنة في تنفيذ وظيفة مثل هذا - 215 00:13:55,930 --> 00:14:00,260 مقارنة اندفاعة 0 نقطة ج الأسبوع الماضي، أن على الرغم من أنه بدا وكأنه كان 216 00:14:00,260 --> 00:14:04,270 الحق، فإنه ببساطة لا تقارن سلسلتين بشكل صحيح. 217 00:14:04,270 --> 00:14:07,470 >> لقد ألقيت بعيدا الرئيسي، ولقد القيت بعيدا التعليقات فقط للتركيز على 218 00:14:07,470 --> 00:14:08,970 رمز هذا الاهتمام هنا. 219 00:14:08,970 --> 00:14:10,660 وانها باللون الأحمر لأنها عربات التي تجرها الدواب. 220 00:14:10,660 --> 00:14:11,670 لسبب ما؟ 221 00:14:11,670 --> 00:14:15,890 >> حسنا، هناك في الأعلى عندما أعلن سلسلة، ما كان يحدث في الواقع 222 00:14:15,890 --> 00:14:17,260 تحت غطاء محرك السيارة؟ 223 00:14:17,260 --> 00:14:19,530 حسنا، اسمحوا لي أن يذهب أكثر إلى الشاشة هنا ورسم ذلك. 224 00:14:19,530 --> 00:14:23,230 ولذا فإنني أعلن، مرة أخرى، GetString سلسلة ق. 225 00:14:23,230 --> 00:14:26,640 >> لذلك انا ذاهب الى المضي قدما الآن و رسم ليالي ما هو عليه حقا. 226 00:14:26,640 --> 00:14:28,590 انها سوف تكون مربعة هنا. 227 00:14:28,590 --> 00:14:30,490 وانا ذاهب الى المطالبة أن هذا هو 32 بت. 228 00:14:30,490 --> 00:14:32,890 على الأقل فإنه عادة ما يكون، على الأقل على CS50 229 00:14:32,890 --> 00:14:34,520 الأجهزة في الكثير من أجهزة الكمبيوتر. 230 00:14:34,520 --> 00:14:35,980 أنا ذاهب إلى نسميها ق. 231 00:14:35,980 --> 00:14:39,070 >> ولكن أذكر الآن أننا دعا GetString. 232 00:14:39,070 --> 00:14:41,430 حتى GetString العودة، بطبيعة الحال، سلسلة. 233 00:14:41,430 --> 00:14:45,790 إذا أنواع المستخدم في ح ه-L-L-O دخول يحصل عاد مرحبا السلسلة. 234 00:14:45,790 --> 00:14:51,010 وهذه السلسلة، كما قلنا للتو، وينتهي في مكان ما في ذاكرة الكمبيوتر الخاص بك 235 00:14:51,010 --> 00:14:53,240 بخط مائل 0 في نهاية المطاف. 236 00:14:53,240 --> 00:14:56,650 أنا أوجه هذا مثل مجموعة - أو كتلة متجاورة من الحروف - 237 00:14:56,650 --> 00:14:58,330 أنه هو في الواقع. 238 00:14:58,330 --> 00:15:01,790 >> والآن، ما هو GetString العودة فعلا؟ 239 00:15:01,790 --> 00:15:04,340 ما GetString تم العائدين كل هذا الوقت؟ 240 00:15:04,340 --> 00:15:07,520 حسنا، نحن نقول، في الأسابيع السابقة، تقوم بإرجاع سلسلة. 241 00:15:07,520 --> 00:15:10,250 ولكن أكثر من الناحية الفنية، ما يفعله GetString العودة على ما يبدو؟ 242 00:15:10,250 --> 00:15:11,610 >> الحضور: عنوان. 243 00:15:11,610 --> 00:15:12,600 >> سرور 1: عنوان. 244 00:15:12,600 --> 00:15:16,630 على وجه التحديد فإنها ترجع عنوان لدغة الأولى، أيا كانت. 245 00:15:16,630 --> 00:15:18,830 أنا فقط الاستمرار في استخدام واحد، اثنان، ثلاثة لأنها مريحة. 246 00:15:18,830 --> 00:15:21,380 >> تقوم بإرجاع عنوان أول حرف في السلسلة. 247 00:15:21,380 --> 00:15:23,510 وقلنا في الاسبوع الماضي ان غير كافية. 248 00:15:23,510 --> 00:15:26,710 لأننا لا نستطيع معرفة دائما حيث في نهاية السلسلة فقط عن طريق 249 00:15:26,710 --> 00:15:30,150 بالتكرار أكثر من ذلك، ربما، مع ل حلقة أو حلقة while أو شيء من هذا القبيل 250 00:15:30,150 --> 00:15:34,990 أن تبحث فقط عن "مائل 0"، الطابع الحارس خاصة. 251 00:15:34,990 --> 00:15:37,220 >> ثم نحن نعلم أن السلسلة يحدث أن تكون من طول - 252 00:15:37,220 --> 00:15:37,980 في هذه الحالة - 253 00:15:37,980 --> 00:15:38,670 خمسة. 254 00:15:38,670 --> 00:15:43,800 لذلك من الناحية الفنية ما يفعله GetString هو يعود Ox123 في هذه الحالة. 255 00:15:43,800 --> 00:15:53,670 وتقنيا ما يحدث بعد ذلك هو أننا تخزين، داخل ثانية، Ox123. 256 00:15:53,670 --> 00:15:56,460 في نهاية اليوم، وعلى الرغم من هذا ومفهوم جديد، المؤشرات، انهم 257 00:15:56,460 --> 00:15:57,350 متغيرات فقط. 258 00:15:57,350 --> 00:16:00,440 ولكن حدوثها لتخزين البتات التي تمثل مجتمعة عنوان. 259 00:16:00,440 --> 00:16:03,700 لذلك من الناحية الفنية كل ما يحصل المخزنة في ليالي هو Ox123. 260 00:16:03,700 --> 00:16:04,680 >> ولكننا كبشر - 261 00:16:04,680 --> 00:16:06,020 بما في ذلك اليوم فصاعدا - 262 00:16:06,020 --> 00:16:09,290 حقا لن يهمني، عادة، ما هو العنوان الفعلي 263 00:16:09,290 --> 00:16:10,520 بعض قطعة من الذاكرة. 264 00:16:10,520 --> 00:16:14,040 انها مجرد لمستوى منخفض من التفاصيل ل من المثير للاهتمام فكريا. 265 00:16:14,040 --> 00:16:15,440 لذلك أنا ذاهب الى التراجع عن هذا. 266 00:16:15,440 --> 00:16:19,810 وبدلا من ذلك، مستوى أكثر عالية، نقول فقط أننا عندما نتحدث عن مؤشرات 267 00:16:19,810 --> 00:16:22,170 انا ذاهب الى مجرد رسم أكثر السهم صديقة للمستخدم أن ينقل 268 00:16:22,170 --> 00:16:26,060 نفس الفكرة والملخصات بعيدا تفاصيل ما الفعلية 269 00:16:26,060 --> 00:16:27,700 عنوان الأساسي هو. 270 00:16:27,700 --> 00:16:33,290 >> الآن إذا رجعنا إلى رمز، ما حدث الاسبوع الماضي اذا كان لدينا سلسلة ر 271 00:16:33,290 --> 00:16:34,510 يساوي GetString؟ 272 00:16:34,510 --> 00:16:38,630 حسنا، إذا أنا مرة أخرى، اكتب في مرحبا هذه المرة أنا ذاهب للحصول على 273 00:16:38,630 --> 00:16:40,460 جزء آخر من الذاكرة. 274 00:16:40,460 --> 00:16:44,820 ح-E-L-L-س مائل 0. 275 00:16:44,820 --> 00:16:48,320 >> ولكن لأنني دعا GetString للمرة الثانية - 276 00:16:48,320 --> 00:16:51,100 وأنا أعرف هذا من النظر إلى الكود لGetString - حتى 277 00:16:51,100 --> 00:16:54,350 على الرغم من انها من قبيل الصدفة أن كان مرحبا كتبته في مرتين، GetString ليس 278 00:16:54,350 --> 00:16:55,890 ذاهب الى محاولة لتحسين وتكون ذكية. 279 00:16:55,890 --> 00:16:58,550 انها مجرد الذهاب للحصول على قطعة أخرى من الذاكرة من الكمبيوتر، الذي هو 280 00:16:58,550 --> 00:16:59,640 ستكون في عنوان آخر. 281 00:16:59,640 --> 00:17:02,330 دعونا نقول فقط تعسفا 456. 282 00:17:02,330 --> 00:17:04,079 >> ثم ما هو الذهاب الى العودة؟ 283 00:17:04,079 --> 00:17:08,030 انها سوف تعود 456 وتخزينه في ر. 284 00:17:08,030 --> 00:17:12,010 وذلك ما يحدث في الواقع، على الجانب الأيسر واليد ولدي قطعة أخرى 285 00:17:12,010 --> 00:17:14,260 من الذاكرة، 32 بت عادة. 286 00:17:14,260 --> 00:17:16,720 وهناك ستذهب Ox456. 287 00:17:16,720 --> 00:17:20,140 ولكن مرة أخرى، أنا لست مهتما في هذه أرقام معينة بعد الآن. 288 00:17:20,140 --> 00:17:23,069 أنا مجرد الذهاب الى تجريدي استدراجه كالسهم. 289 00:17:23,069 --> 00:17:25,202 >> لذلك هذا هو الآن تفسيرا جديدا. 290 00:17:25,202 --> 00:17:28,735 ولكن انها نفس الفكرة بالضبط هذا ويحدث كل هذا الوقت. 291 00:17:28,735 --> 00:17:33,150 وذلك هو السبب إذن، أن هذا أولا وكان الإصدار من مقارنة عربات التي تجرها الدواب 292 00:17:33,150 --> 00:17:34,480 الأسبوع الماضي هو السبب؟ 293 00:17:34,480 --> 00:17:38,000 عندما تفعل إذا ق يساوي يساوي ر ما أنت حقا 294 00:17:38,000 --> 00:17:40,550 تحت غطاء محرك السيارة مقارنة؟ 295 00:17:40,550 --> 00:17:41,910 >> كنت بمقارنة العناوين. 296 00:17:41,910 --> 00:17:47,950 وحدسي فقط، بوضوح، Ox123 لا يجري على قدم المساواة Ox456. 297 00:17:47,950 --> 00:17:49,380 هذه الأرقام، هذه البتات تختلف فقط. 298 00:17:49,380 --> 00:17:53,220 >> وهكذا على الدوام، وقال أنه في الأسبوع الماضي قمت بكتابة أشياء مختلفة، حتى لو كان 299 00:17:53,220 --> 00:17:55,360 كلمات كانت حرفية نفسها. 300 00:17:55,360 --> 00:17:58,770 لذلك نحن إصلاح هذه. 301 00:17:58,770 --> 00:18:00,120 في شروط للشخص العادي، ما هو الإصلاح؟ 302 00:18:00,120 --> 00:18:02,110 >> الحضور: استخدام وظيفة. 303 00:18:02,110 --> 00:18:02,870 >> سرور 1: استخدام وظيفة. 304 00:18:02,870 --> 00:18:05,190 أو نجوم تشارك بالتأكيد، ولكن استخدام دالة على فعل ما؟ 305 00:18:05,190 --> 00:18:05,962 >> الحضور: لمقارنة السلاسل. 306 00:18:05,962 --> 00:18:07,390 >> سرور 1: لمقارنة السلاسل. 307 00:18:07,390 --> 00:18:11,030 لذلك كان المشكلة الأساسية هنا أن كنت مجرد النظر في 308 00:18:11,030 --> 00:18:15,870 نوعية سلاسل يحدده مقارنة عناوينهم. 309 00:18:15,870 --> 00:18:18,540 ومن الواضح أن مجرد البكم الآن مرة واحدة على فهم ما يجري 310 00:18:18,540 --> 00:18:19,510 تحت غطاء محرك السيارة. 311 00:18:19,510 --> 00:18:23,270 لمقارنة سلاسل حقا لمعرفة ما إذا انهم على قدم المساواة في الطريقة أن الإنسان 312 00:18:23,270 --> 00:18:26,680 ستنظر سلسلتين لتكون مساوية نحن بحاجة إلى مقارنتها حرف 313 00:18:26,680 --> 00:18:28,070 حرف حرف. 314 00:18:28,070 --> 00:18:30,020 >> الآن أنا قد فعلت هذا مضجر جدا. 315 00:18:30,020 --> 00:18:32,240 ولكن حميمه، ونحن باستخدام حلقة for. 316 00:18:32,240 --> 00:18:36,050 ومقارنة فقط و قوس أنا ضد ر قوس ط. 317 00:18:36,050 --> 00:18:39,590 ق ط قوس زائد 1 ر ضد قوس ط زائد 1، وهكذا دواليك، داخل 318 00:18:39,590 --> 00:18:40,580 نوع من حلقة. 319 00:18:40,580 --> 00:18:44,950 وإذا كنت بقعة أي حرفين أن تختلف، أو إذا وأنا أدرك أن أوه، و هو 320 00:18:44,950 --> 00:18:48,410 أقصر من طن أو أكثر من طن يمكنني القول فورا كاذبة، 321 00:18:48,410 --> 00:18:49,390 انهم ليسوا نفس الشيء. 322 00:18:49,390 --> 00:18:55,370 >> ولكن إذا كنت تحصل من خلال ق ور ويقول نفس، نفس، نفس، نفس، نفس، نهاية 323 00:18:55,370 --> 00:18:58,520 كلا سلاسل، أستطيع أن أقول صحيح، أنهم متساوون. 324 00:18:58,520 --> 00:19:01,040 جيدا، والحمد لله، منذ سنوات شخص كتب هذا الرمز بالنسبة لنا. 325 00:19:01,040 --> 00:19:03,790 >> وأطلقوا عليه StrComp لسلسلة مقارنة. 326 00:19:03,790 --> 00:19:11,900 وعلى الرغم من انها قليلا عداد بديهية، StrComp بإرجاع 0 إذا كانت تلك 327 00:19:11,900 --> 00:19:14,520 سلسلتين، ق ور هي نفسها. 328 00:19:14,520 --> 00:19:18,090 لكنه يعود قيمة سالبة إذا ق يجب أن تأتي قبل ر أبجديا أو 329 00:19:18,090 --> 00:19:20,610 قيمة موجبة إذا كان يجب أن تأتي بعد ر أبجديا. 330 00:19:20,610 --> 00:19:24,030 >> حتى إذا كنت تريد من أي وقت مضى لفرز شيء، اتضح أن StrComp مفيد. 331 00:19:24,030 --> 00:19:26,660 لأنه لا يقول فقط نعم أو لا، على قدم المساواة أو لا. 332 00:19:26,660 --> 00:19:30,440 أنها تعطيك شعورا ترتيب مثل القوة القاموس. 333 00:19:30,440 --> 00:19:33,770 حتى StrComp، ق ر فاصلة متساوين يساوي 0 يعني أن 334 00:19:33,770 --> 00:19:35,200 سلاسل متساوون حقا. 335 00:19:35,200 --> 00:19:38,680 لأن من كتب هذه الوظيفة منذ سنوات ويفترض استخدامها لحلقة 336 00:19:38,680 --> 00:19:42,840 أو حلقة while أو شيء من هذا القبيل لدمج أكثر من الأحرف مرة أخرى 337 00:19:42,840 --> 00:19:45,270 ومرة أخرى ومرة ​​أخرى. 338 00:19:45,270 --> 00:19:47,300 >> ولكن المشكلة هنا نشأت اثنين. 339 00:19:47,300 --> 00:19:48,750 كان هذا copy0.c. 340 00:19:48,750 --> 00:19:51,680 والاثنان باللون الأحمر هو لانها معيبة ذلك. 341 00:19:51,680 --> 00:19:52,800 وماذا نفعل هنا؟ 342 00:19:52,800 --> 00:19:54,310 حسنا، أولا دعوت GetString. 343 00:19:54,310 --> 00:19:56,255 وأنا تخزين قيمة الإرجاع في ليالي. 344 00:19:56,255 --> 00:20:00,260 لذلك هذا الى حد كبير نفس هذا الجزء العلوي من الصورة. 345 00:20:00,260 --> 00:20:01,490 >> ولكن ما يأتي بعد ذلك؟ 346 00:20:01,490 --> 00:20:04,980 حسنا، اسمحوا لي أن تمضي قدما والتخلص من مجموعة كاملة من هذا. 347 00:20:04,980 --> 00:20:09,650 سنقوم الترجيع في الوقت المناسب إلى حيث نحن فقط ليالي، التي هي الآن بما يتفق مع 348 00:20:09,650 --> 00:20:10,940 سطر واحد هناك. 349 00:20:10,940 --> 00:20:11,400 >> أتحقق. 350 00:20:11,400 --> 00:20:13,450 إذا ق يساوي يساوي 0. 351 00:20:13,450 --> 00:20:18,670 الآن، ملاحظة جانبية سريعة، وعندما قد GetString العودة 0؟ 352 00:20:18,670 --> 00:20:19,580 ليس هناك ذاكرة كافية. 353 00:20:19,580 --> 00:20:19,880 أليس كذلك؟ 354 00:20:19,880 --> 00:20:22,310 >> انه من النادر أن هذا سيحدث، بالتأكيد على جهاز كمبيوتر هذا 355 00:20:22,310 --> 00:20:24,740 حصلت مئات أو ميغس حتى العربات من ذاكرة الوصول العشوائي. 356 00:20:24,740 --> 00:20:27,080 ولكن يمكن ذلك، من الناحية النظرية، وعودة 0، خاصة إذا كان 357 00:20:27,080 --> 00:20:28,080 لم تتعاون المستخدم. 358 00:20:28,080 --> 00:20:31,640 هناك طرق التظاهر وكأنك لم أي شيء إدخالها وخدعة 359 00:20:31,640 --> 00:20:34,100 GetString إلى العودة 0 بفعالية. 360 00:20:34,100 --> 00:20:35,470 >> لذلك يجري للتحقق من ذلك. 361 00:20:35,470 --> 00:20:39,430 لأنه إذا بدأت أي واحد منكم الحصول على، وبالفعل، وتجزئة أخطاء - 362 00:20:39,430 --> 00:20:42,280 والتي كانت على الأرجح مصدر بعض الإحباط - 363 00:20:42,280 --> 00:20:46,150 تلك هي دائما تقريبا نتيجة من الخطأ المتعلقة بالذاكرة. 364 00:20:46,150 --> 00:20:50,440 بطريقة ما كنت افسدت فيما يتعلق بإيجاد مؤشر، حتى لو كنت لم تدرك 365 00:20:50,440 --> 00:20:51,530 كان هناك مؤشر. 366 00:20:51,530 --> 00:20:55,260 تجزئة لذلك كنت قد يسببها أخطاء في وقت مبكر من أسبوع واحد باستخدام 367 00:20:55,260 --> 00:21:02,100 شيء من هذا القبيل لحلقة أو حين حلقة ومجموعة من خلال الذهاب بعيدا جدا 368 00:21:02,100 --> 00:21:05,900 الماضي حدود بعض صفيف كنت أعلنت، في أسبوعين في 369 00:21:05,900 --> 00:21:06,690 معين. 370 00:21:06,690 --> 00:21:09,220 >> كنت قد فعلت ذلك حتى في المشكلة تعيين أربعة مع اندلاع. 371 00:21:09,220 --> 00:21:12,910 حتى ولو كنت على الارجح لم نر أي النجوم في كود التوزيع ل 372 00:21:12,910 --> 00:21:17,410 الاختراق، وتبين أن تلك GRect وGOval وأشياء أخرى من هذا القبيل، 373 00:21:17,410 --> 00:21:19,650 تلك هي في الواقع مؤشرات تحت غطاء محرك السيارة. 374 00:21:19,650 --> 00:21:23,430 >> لكن ستانفورد، مثلنا، نوع من الجلود تلك التفاصيل على الأقل بالنسبة للمكتبات 375 00:21:23,430 --> 00:21:26,540 أغراض، مثل الكثير نقوم به لسلسلة وشار *. 376 00:21:26,540 --> 00:21:30,060 ولكن GRect وGOval وجميع تلك الأشياء يا رفاق هي أو سيتم استخدام 377 00:21:30,060 --> 00:21:32,630 هذا الأسبوع هي في نهاية المطاف عناوين الذاكرة. 378 00:21:32,630 --> 00:21:33,650 انك لا تعرف ذلك. 379 00:21:33,650 --> 00:21:37,240 >> لذلك فإنه ليس من المستغرب بعد ذلك، ربما، التي قد رحلة على بعض 380 00:21:37,240 --> 00:21:38,580 أخطاء تجزئة. 381 00:21:38,580 --> 00:21:41,290 ولكن ما هو مثير للاهتمام هنا الآن، إذا بعد أن تحقق من وجود 0 نفعل 382 00:21:41,290 --> 00:21:43,460 سلسلة ر يحصل ق. 383 00:21:43,460 --> 00:21:44,690 حسنا، اسمحوا لي أن تعلن ر. 384 00:21:44,690 --> 00:21:47,730 انا ذاهب الى رسم بأنها مربع، 32 بت، الذي يطلق عليه ر. 385 00:21:47,730 --> 00:21:49,740 ثم انا ذاهب الى القيام يحصل ق. 386 00:21:49,740 --> 00:21:51,130 >> حسنا، ماذا يعني ذلك؟ 387 00:21:51,130 --> 00:21:53,280 كذلك، فإنه من الصعب قليلا للتفكير صورة عن ذلك من الحكمة. 388 00:21:53,280 --> 00:21:55,025 ولكن دعونا نفكر في ما هو داخل س؟ 389 00:21:55,025 --> 00:21:59,430 ما هو حرفيا داخل هذا المتغير؟ 390 00:21:59,430 --> 00:22:01,500 قيمة Ox123. 391 00:22:01,500 --> 00:22:05,815 >> لذلك عندما أقول سلسلة ر يحصل ثانية، أن مجرد يعني حرفيا اتخاذ عدد 392 00:22:05,815 --> 00:22:10,070 في ليالي، وهو Ox123 ووضعها Ox123. 393 00:22:10,070 --> 00:22:13,740 أو بالصور، وإذا كنت من النوع التجريدي بعيدا عن التفاصيل التي لديها 394 00:22:13,740 --> 00:22:16,600 تأثير فعل حرفيا هذا أيضا. 395 00:22:16,600 --> 00:22:22,110 >> وحتى الآن، والتفكير مرة أخرى إلى الأسبوع الماضي عندما انتقلنا إلى الرأسمالية T. و 396 00:22:22,110 --> 00:22:23,800 لم T قوس 0. 397 00:22:23,800 --> 00:22:27,150 كذلك، T قوس 0، على الرغم من انها المؤشر، يمكنك التعامل معها كما لو 398 00:22:27,150 --> 00:22:29,220 انها مجموعة، مع مربع قوس التدوين. 399 00:22:29,220 --> 00:22:31,550 >> فأين هو قوس T 0؟ 400 00:22:31,550 --> 00:22:32,990 حسنا، انها ساعة. 401 00:22:32,990 --> 00:22:36,800 وذلك عندما نستخدم هذا الخط من التعليمات البرمجية، اثنين العلوي، وهو في ذلك ج type.h 402 00:22:36,800 --> 00:22:38,460 ملف الرأس، حيث ان لقد أعلن ذلك. 403 00:22:38,460 --> 00:22:44,410 كنت الاستفادة من هذا H. لكن بطبيعة الحال، هذا هو بالضبط نفس ح هذا 404 00:22:44,410 --> 00:22:46,540 داخل ثانية، إذا جاز التعبير. 405 00:22:46,540 --> 00:22:51,930 وحتى الآن قمت بتغيير أو رسملة كلا من الأصلي و 406 00:22:51,930 --> 00:22:53,120 يسمى نسخة. 407 00:22:53,120 --> 00:22:56,620 لأنك لم تجعل نسخة في الطريقة التي يريد الإنسان أن يكون. 408 00:22:56,620 --> 00:22:59,710 >> فما كان الإصلاح هنا، في copy1.c الأسبوع الماضي؟ 409 00:22:59,710 --> 00:23:03,070 410 00:23:03,070 --> 00:23:05,580 وظائف، بحيث يمكن ونحن في الواقع نسخ السلسلة. 411 00:23:05,580 --> 00:23:08,700 وبشكل أساسي، ماذا نحن بحاجة إلى القيام به من أجل نسخ السلسلة؟ 412 00:23:08,700 --> 00:23:12,070 >> كذلك، في هذا الإصدار الأخضر هنا أنا سيفعل ذلك مستوى منخفض إلى حد ما. 413 00:23:12,070 --> 00:23:14,260 هناك فعلا وظائف أنها يمكن أن تساعد في ذلك. 414 00:23:14,260 --> 00:23:17,710 ولكن واحدة أبسط، والأكثر واحدة مألوفة، على الأقل، سوف تكون قريبا 415 00:23:17,710 --> 00:23:19,600 مألوف لدينا، هو التالي - 416 00:23:19,600 --> 00:23:21,910 حتى واحد في السطر الأول من التعليمات البرمجية باللون الأخضر الآن. 417 00:23:21,910 --> 00:23:23,970 >> أنا فقط أعاد كتابة ق ك char *. 418 00:23:23,970 --> 00:23:25,250 ليس هناك وظيفية الفرق هناك. 419 00:23:25,250 --> 00:23:28,790 أنا فقط رمت مكتبة CS50 و أنا اصفا إياه ما هو عليه، وشار *. 420 00:23:28,790 --> 00:23:31,640 >> الآن نقطة، نقطة، نقطة، لأن هناك بعض التحقق من الخطأ وهذا ليس 421 00:23:31,640 --> 00:23:33,200 المثير للاهتمام أن نتحدث عن مرة أخرى. 422 00:23:33,200 --> 00:23:34,710 وحتى الآن تم التصريح ر. 423 00:23:34,710 --> 00:23:35,780 بل هو شار جدا *. 424 00:23:35,780 --> 00:23:38,280 فرسمت ساحة صغيرة على الشاشة مثل قبل. 425 00:23:38,280 --> 00:23:41,870 >> ولكن على الجانب الأيمن، malloc، قلنا هو تخصيص الذاكرة. 426 00:23:41,870 --> 00:23:44,130 ذلك تخصيص بعض قطعة من الذاكرة. 427 00:23:44,130 --> 00:23:48,830 وكم بايت هل نحن فعلا تريد تخصيص، لا يبدو ذلك؟ 428 00:23:48,830 --> 00:23:50,340 >> كذلك، وطول سلسلة من ليالي. 429 00:23:50,340 --> 00:23:52,310 حتى لو كان هذا مرحبا ستكون خمس سنوات. 430 00:23:52,310 --> 00:23:53,950 سوف نقول ح ه-L-L-س. 431 00:23:53,950 --> 00:23:55,090 حتى خمس بايت. 432 00:23:55,090 --> 00:23:57,960 >> ولكن بعد ذلك زائد 1، لماذا 1؟ 433 00:23:57,960 --> 00:23:58,830 حرف 0. 434 00:23:58,830 --> 00:24:03,640 إذا كنا لا يترك مجالا لهذا الرجل نحن قد خلق وضعا غير قصد 435 00:24:03,640 --> 00:24:05,600 حيث السلسلة هو ح ه-L-L-س. 436 00:24:05,600 --> 00:24:08,470 ثم GetString المرة القادمة دعا وأنا اكتب في، على سبيل المثال، 437 00:24:08,470 --> 00:24:14,020 ديفيد، D واحد في الخامس ط د، الكمبيوتر هو الذهاب يعتقدون أن ليالي هو في الواقع 438 00:24:14,020 --> 00:24:18,900 ح-E-L-L-O-د واحد في الخامس ط د لأن هناك لا كسر في ما بين هذه الكلمات. 439 00:24:18,900 --> 00:24:19,810 >> لذلك نحن بحاجة أن انقطاع. 440 00:24:19,810 --> 00:24:20,720 لذلك نحن لا نريد الخمسة. 441 00:24:20,720 --> 00:24:22,100 نريد ستة بايت. 442 00:24:22,100 --> 00:24:23,110 >> وأقول بايت. 443 00:24:23,110 --> 00:24:25,220 لكنها في الحقيقة حجم وقت شار. 444 00:24:25,220 --> 00:24:28,040 شار تقنيا هو تقريبا دائما بايت واحد. 445 00:24:28,040 --> 00:24:31,030 >> ولكن فقط لجعل رمز لنا المحمولة، إذا جاز التعبير، بحيث أنه يعمل على 446 00:24:31,030 --> 00:24:33,750 أجهزة كمبيوتر مختلفة حتى لو كانت قد تكون مختلفة إلى حد ما تحت 447 00:24:33,750 --> 00:24:36,590 غطاء محرك السيارة، وأنا ذاهب إلى بشكل عام يقول حجم شار بحيث 448 00:24:36,590 --> 00:24:37,660 قانون بلدي يعمل دائما. 449 00:24:37,660 --> 00:24:40,610 وأنا لم يكن لديك إلى إعادة ترجمة عليه فقط لأنني ترقية جهاز الكمبيوتر الخاص بي أو استخدام 450 00:24:40,610 --> 00:24:42,140 بعض منصة مختلفة. 451 00:24:42,140 --> 00:24:45,300 >> حتى لقد حصلت على 6 أضعاف حجم شار، الذي صادف أن يكون 1. 452 00:24:45,300 --> 00:24:47,440 بحيث يمكن أن يعني malloc أعطني ستة بايت. 453 00:24:47,440 --> 00:24:49,140 ما الذي تفعله في الواقع؟ 454 00:24:49,140 --> 00:24:52,810 حسنا، اسمحوا لي لفة العودة في الوقت المناسب هنا إلى أين نحن في القصة. 455 00:24:52,810 --> 00:24:57,620 >> حتى إذا ذهبت إلى هنا، لقد أعلن شار * دعا ر. 456 00:24:57,620 --> 00:25:00,280 لقد تسمى الآن malloc لمدة ستة بايت. 457 00:25:00,280 --> 00:25:06,400 والآن أنا ذاهب إلى رسم هؤلاء الستة بايت تماما مثل مجموعة في وقت سابق. 458 00:25:06,400 --> 00:25:10,570 ولكن أنا في الواقع لا أعرف ما هو داخل هذه المجموعة. 459 00:25:10,570 --> 00:25:14,640 >> إذا كنت تخصيص ذاكرة اتضح أن لا يمكن أن تثق أن هناك بعض 460 00:25:14,640 --> 00:25:15,810 يعرف قيمة هناك. 461 00:25:15,810 --> 00:25:18,400 وكان من الممكن استخدامه من قبل شيئا آخر، بعض من وظيفة أخرى، بعض الدول الاخرى 462 00:25:18,400 --> 00:25:19,630 سطر من التعليمات البرمجية التي كتبت. 463 00:25:19,630 --> 00:25:22,870 ولذا فإننا سوف ندعو عموما هذه القمامة القيم والاستفادة منها، وربما، و 464 00:25:22,870 --> 00:25:26,170 علامات استفهام، مشيرا إلى أننا فقط لا أعرف ما هو في الواقع هناك. 465 00:25:26,170 --> 00:25:30,390 وهذا ليس صفقة كبيرة ما دمنا أذكياء بما فيه الكفاية لتلك الكتابة 466 00:25:30,390 --> 00:25:34,550 القيم القمامة مع الأرقام أو حرف أننا نهتم. 467 00:25:34,550 --> 00:25:36,340 >> حتى في هذه الحالة ما أنا ذاهب الى القيام به؟ 468 00:25:36,340 --> 00:25:38,670 حسنا، خط بلدي من التعليمات البرمجية المقبل، لدي أربعة. 469 00:25:38,670 --> 00:25:41,350 الباحث أحصل 0، ن يحصل على طول سلسلة من ليالي. 470 00:25:41,350 --> 00:25:42,750 لذلك مألوفة للحلقة. 471 00:25:42,750 --> 00:25:45,875 أنا أقل من أو يساوي ن، والتي عادة ما هو أعلاه. 472 00:25:45,875 --> 00:25:47,500 >> ولكن هذه المرة انها متعمدة. 473 00:25:47,500 --> 00:25:51,890 أنا + +، ثم أنا ببساطة تفعل ر ط قوس يحصل ق. 474 00:25:51,890 --> 00:25:56,320 لأن صورة بلدي يبدو مثل هذا في هذه اللحظة، وتخزينها في ر هو 475 00:25:56,320 --> 00:25:59,530 عنوان ذلك جزءا من الذاكرة العشوائية القيم التي هي غير معروفة. 476 00:25:59,530 --> 00:26:03,030 ولكن بمجرد أن أفعل ر قوس 0 أن يضع لي هنا. 477 00:26:03,030 --> 00:26:07,430 >> وما ينتهي بأن يستدرج هناك؟ 478 00:26:07,430 --> 00:26:08,740 نحن في نهاية المطاف وضع ساعة. 479 00:26:08,740 --> 00:26:11,170 لأن هذا هو ما هو في قوس ق 0. 480 00:26:11,170 --> 00:26:14,300 ثم نفس الشيء لل ه، ولتر، ولتر، وس. 481 00:26:14,300 --> 00:26:17,930 >> ن، لماذا لم أذهب حتى من خلال على قدم المساواة إلى n؟ 482 00:26:17,930 --> 00:26:19,200 بسبب الطابع 0. 483 00:26:19,200 --> 00:26:23,580 حتى مجرد أن تكون واضحة، ثم، إذا أنا في الواقع يمحو ما هذه القمامة 484 00:26:23,580 --> 00:26:28,870 القيم وثم رسم الواقع في ما أتوقع، وهذا هو ق قوس 1، 2، 485 00:26:28,870 --> 00:26:32,440 3، 4، بالإضافة إلى هذا ما زائدة شخصية جديدة. 486 00:26:32,440 --> 00:26:36,080 >> وحتى الآن إذا واصلنا الماضي نقطة، نقطة، نقطة في هذا الإصدار الصحيح 487 00:26:36,080 --> 00:26:41,930 ورسملتها ر 0 قوس وأود، من بالطبع، يمكن الاستفادة هذا فقط 488 00:26:41,930 --> 00:26:47,050 الرجل هنا، والتي من الناحية النظرية، وكان في نهاية المطاف الهدف. 489 00:26:47,050 --> 00:26:48,040 ذلك أن كل المؤشر. 490 00:26:48,040 --> 00:26:51,430 >> وكنت قد تم استخدامها منذ أسابيع الآن في سياق السلاسل. 491 00:26:51,430 --> 00:26:53,530 ولكن تحت غطاء انهم قليلا أكثر تعقيدا. 492 00:26:53,530 --> 00:26:57,520 ولكن إذا كنت تعتقد عنهم في هذا شكل التصويرية أقترح انهم 493 00:26:57,520 --> 00:27:01,720 ربما ليس كل ما مخيفة لأنها قد يبدو لأول وهلة الأولى، 494 00:27:01,720 --> 00:27:04,730 وخاصة مع مثل هذه الجملة الجديد. 495 00:27:04,730 --> 00:27:07,290 أي أسئلة على مؤشرات، سلاسل، أو حرف؟ 496 00:27:07,290 --> 00:27:07,580 نعم؟ 497 00:27:07,580 --> 00:27:09,252 >> الحضور: هل كنت أعود إلى [غير مسموع]؟ 498 00:27:09,252 --> 00:27:10,502 >> سرور 1: بالتأكيد. 499 00:27:10,502 --> 00:27:14,058 500 00:27:14,058 --> 00:27:19,525 >> الجمهور: فكيف يأتي في حياتك الأخيرة جدا الخط، لم يكن لديك ر * خط 501 00:27:19,525 --> 00:27:21,513 و* ق في الخط؟ 502 00:27:21,513 --> 00:27:23,004 لا يكون لديك إشارة إلى - 503 00:27:23,004 --> 00:27:24,640 >> سرور 1: آه، سؤال جيد حقا. 504 00:27:24,640 --> 00:27:26,800 لماذا لا لدي * ر و* ق؟ 505 00:27:26,800 --> 00:27:30,340 لفترة وجيزة، في الأسبوع الماضي، كما هو الحال في لدينا مبادلة وظيفة، وأنا لم أقول أنه عندما 506 00:27:30,340 --> 00:27:33,350 كنت قد حصلت على مؤشر الوسائل التي الذي كنت أذهب إلى هناك كما فعلنا 507 00:27:33,350 --> 00:27:36,590 جسديا على خشبة المسرح، وكان في الواقع ل استخدم عامل نجوم. 508 00:27:36,590 --> 00:27:40,570 >> اتضح أن هذه الساحة قوس التدوين هو ما سوف ندعو النحوية 509 00:27:40,570 --> 00:27:44,190 السكر، والذي هو مجرد وسيلة مثير لل قائلا انها منهج الاختزال ل 510 00:27:44,190 --> 00:27:45,950 بالضبط ما كنت تصف. 511 00:27:45,950 --> 00:27:49,385 لكنه أكثر من ذلك بقليل بديهية. 512 00:27:49,385 --> 00:27:53,510 وعلى مخاطر مما يجعل هذا يبدو أكثر تعقيدا مما كان يجب أن يكون، 513 00:27:53,510 --> 00:27:56,990 ما يحدث في الواقع هنا هو ما يلي - 514 00:27:56,990 --> 00:28:01,450 إذا قلت ر * وهذا يعني الذهاب الى عنوان المخزنة في ر. 515 00:28:01,450 --> 00:28:04,350 >> لذلك حرفيا، وإذا ر تخزين عنوان أن ح 516 00:28:04,350 --> 00:28:07,300 في البداية، ر * يعني تذهب هنا. 517 00:28:07,300 --> 00:28:10,730 الآن، ماذا ر 0 قوس يعني؟ 518 00:28:10,730 --> 00:28:11,560 الشيء نفسه بالضبط. 519 00:28:11,560 --> 00:28:13,510 انها مجرد أكثر قليلا المستخدم ودية في الكتابة. 520 00:28:13,510 --> 00:28:14,430 >> ولكن أنا لم تفعل حتى الآن. 521 00:28:14,430 --> 00:28:17,800 لا أستطيع أن أقول ر * يحصل * ق. 522 00:28:17,800 --> 00:28:19,440 لأن ما أود أن تفعل بعد ذلك؟ 523 00:28:19,440 --> 00:28:22,950 سأكون وضع ح، ح، ح، ح، ح طوال كل شيء. 524 00:28:22,950 --> 00:28:22,995 أليس كذلك؟ 525 00:28:22,995 --> 00:28:26,020 >> بسبب ر * يتم الانتقال إلى العنوان في ر. 526 00:28:26,020 --> 00:28:27,580 ولكن نحن داخل حلقة. 527 00:28:27,580 --> 00:28:32,150 وما قيمة أنا تزايد، بطبيعة الحال، على كل التكرار؟ 528 00:28:32,150 --> 00:28:32,690 ط. 529 00:28:32,690 --> 00:28:34,590 >> ولكن هناك فرصة هنا، أليس كذلك؟ 530 00:28:34,590 --> 00:28:37,870 على الرغم من أن هذا يبدو وكأنه هو الحصول على أكثر من ذلك بقليل متطورة 531 00:28:37,870 --> 00:28:40,730 من تدوين مربع قوس استخدمنا لبعض الوقت - 532 00:28:40,730 --> 00:28:43,840 اسمحوا لي أن التراجع عن بلدي ساعة التغيير هناك - 533 00:28:43,840 --> 00:28:48,870 على الرغم من هذا هو الحصول الآن قليلا مربي الحيوانات، والفكرة الأساسية، إذا ر * 534 00:28:48,870 --> 00:28:53,630 يعني هنا و* ر فقط الانتقال إلى العنوان في ر. 535 00:28:53,630 --> 00:28:54,990 >> ولكن ماذا كان العنوان في ر؟ 536 00:28:54,990 --> 00:28:56,850 عدد نبقي تستخدمه؟ 537 00:28:56,850 --> 00:29:00,540 مثل Ox456، دعونا تحقيق ذلك مرة أخرى فقط من أجل المناقشة. 538 00:29:00,540 --> 00:29:05,380 حسنا، إذا كنت ترغب في الحصول على البريد في ر سلسلة، أنا فقط أريد أن أذهب إلى، 539 00:29:05,380 --> 00:29:06,460 أساسا، 456. 540 00:29:06,460 --> 00:29:09,230 >> أو بالأحرى، 457. 541 00:29:09,230 --> 00:29:10,590 أنا فقط بحاجة إلى إضافة واحد. 542 00:29:10,590 --> 00:29:11,790 ولكن أستطيع أن أفعل ذلك، أليس كذلك؟ 543 00:29:11,790 --> 00:29:14,680 بسبب ر، على الرغم من وأظل الرسم عليه الآن كالسهم، انها مجرد 544 00:29:14,680 --> 00:29:16,570 العدد، Ox456. 545 00:29:16,570 --> 00:29:21,400 وإذا أضيف إلى ذلك، أو أكثر عموما، إذا أضيف إلى ذلك أنني أستطيع 546 00:29:21,400 --> 00:29:24,350 تحصل في الواقع تماما حيث أريد. 547 00:29:24,350 --> 00:29:26,260 حتى لو كنت فعلا القيام بذلك - 548 00:29:26,260 --> 00:29:28,970 وهذا هو ما يسمى الآن الماوس للالحسابي - 549 00:29:28,970 --> 00:29:30,375 أنا يمكن إزالة هذا الخط. 550 00:29:30,375 --> 00:29:33,550 وهو، بصراحة، أعتقد أكثر وضوحا و أكثر من ذلك بقليل المستخدم ودية للقراءة. 551 00:29:33,550 --> 00:29:35,970 ولكن هذا هو ما لا يقل الصحيح. 552 00:29:35,970 --> 00:29:38,570 >> هذا السطر من التعليمات البرمجية يستخدم الآن المؤشر الحسابي. 553 00:29:38,570 --> 00:29:40,920 قائلا انها تذهب ل العنوان التالي - 554 00:29:40,920 --> 00:29:44,670 مهما كانت بداية ر هو الذي ر ط زائد، والتي في البداية 555 00:29:44,670 --> 00:29:45,730 0، وهو أمر عظيم. 556 00:29:45,730 --> 00:29:49,280 لأن هذا يعني بداية ر زائد 1، بالإضافة إلى 2، بالإضافة إلى 3، وهكذا دواليك. 557 00:29:49,280 --> 00:29:51,030 ونفس الصفقة مع ليالي. 558 00:29:51,030 --> 00:29:52,750 >> السكر النحوية لذلك لهذا الغرض. 559 00:29:52,750 --> 00:29:55,900 ولكن فهم ما يحدث في الواقع تحت غطاء محرك السيارة، وأنا أزعم، 560 00:29:55,900 --> 00:29:57,410 هو في الواقع مفيدة في حد ذاته. 561 00:29:57,410 --> 00:30:00,620 لأنه يعني الآن ليس هناك أكثر من ذلك بكثير السحر مستمرة 562 00:30:00,620 --> 00:30:01,620 تحت غطاء محرك السيارة. 563 00:30:01,620 --> 00:30:03,920 وهناك لن يكون غيرها الكثير طبقات نتمكن من قشر العودة بالنسبة لك. 564 00:30:03,920 --> 00:30:04,810 هذا هو ج. 565 00:30:04,810 --> 00:30:06,410 وهذا هو البرمجة. 566 00:30:06,410 --> 00:30:08,002 سؤال جيد حقا. 567 00:30:08,002 --> 00:30:11,570 >> كل الحق، لذلك كان هذا أن عربات التي تجرها الدواب برنامج كنت أشير إليها سابقا. 568 00:30:11,570 --> 00:30:12,650 كانت معيبة المبادلة. 569 00:30:12,650 --> 00:30:14,070 إذا لم يبدو للعمل. 570 00:30:14,070 --> 00:30:17,390 أذكر ذلك تماما كما هو الحال مع الحليب و عصير البرتقال - والتي بدأت 571 00:30:17,390 --> 00:30:18,660 شرب مظاهرة اليوم. 572 00:30:18,660 --> 00:30:22,220 وذلك فقط كما هو الحال مع عصير البرتقال و الحليب، ونحن لم تضطر إلى استخدام 573 00:30:22,220 --> 00:30:26,200 متغير مؤقت، تمة، لعقد مؤقتا حتى نتمكن من ثم 574 00:30:26,200 --> 00:30:28,820 تغيير قيمته وثم تحديث ب. 575 00:30:28,820 --> 00:30:32,870 >> ولكن هذه الوظيفة، قلنا، أو هذا البرنامج الذي كان هذه الوظيفة 576 00:30:32,870 --> 00:30:35,670 كان مكتوبة خاطئ ومعيب، لماذا؟ 577 00:30:35,670 --> 00:30:38,870 578 00:30:38,870 --> 00:30:39,090 نعم؟ 579 00:30:39,090 --> 00:30:42,471 >> الحضور: [غير مسموع]. 580 00:30:42,471 --> 00:30:44,940 >> سرور 1: بالضبط، وعندما استدعاء المبادلة - 581 00:30:44,940 --> 00:30:47,820 أو أكثر عموما، عند استدعاء أكثر من أي وظيفة - 582 00:30:47,820 --> 00:30:51,210 إذا كانت الحجج لتلك الوظيفة هي بدائية، إذا جاز التعبير، ورجات حرف 583 00:30:51,210 --> 00:30:56,740 والزوجي والعوامات، وأشياء من دون نجوم، الذي يتم تمرير في نسخة من 584 00:30:56,740 --> 00:30:57,540 حجة. 585 00:30:57,540 --> 00:31:01,580 حتى إذا كان × 1 وكان ذ 2، ويجري أن يكون 1 و ب ستكون 2. 586 00:31:01,580 --> 00:31:05,250 ولكن انهم ذاهبون لتكون قطع مختلفة من البتات، قطع مختلفة من 587 00:31:05,250 --> 00:31:07,540 الذاكرة التي يحدث أن تخزين قيم متطابقة. 588 00:31:07,540 --> 00:31:12,160 >> حتى هذا الرمز هو السوبر مثالية في مبادلة أ و ب. 589 00:31:12,160 --> 00:31:13,850 انها ليست جيدة في مبادلة - 590 00:31:13,850 --> 00:31:15,290 في المثال الأسبوع الماضي - 591 00:31:15,290 --> 00:31:16,390 x و y. 592 00:31:16,390 --> 00:31:18,780 لأن مرة أخرى، وانهم في نطاق الخطأ. 593 00:31:18,780 --> 00:31:21,310 >> الآن، كيف نذهب حول إصلاح هذا؟ 594 00:31:21,310 --> 00:31:23,140 كان علينا أن جعل وظيفة ننظر قليلا أقبح. 595 00:31:23,140 --> 00:31:25,250 ولكن مرة أخرى، والنظر في ما هذا يعني فقط. 596 00:31:25,250 --> 00:31:27,840 597 00:31:27,840 --> 00:31:31,500 >> وفعلا، اسمحوا لي، من أجل التناسق، تغيير شيء واحد حتى انها مطابقة لل 598 00:31:31,500 --> 00:31:33,200 ما فعلناه للتو. 599 00:31:33,200 --> 00:31:35,690 كما ذكرت في الأسبوع الماضي، فإنه لا أينما تذهب. 600 00:31:35,690 --> 00:31:38,120 في الواقع، عادة ما كنت وضعت نجمة بجانب اسم متغير. 601 00:31:38,120 --> 00:31:40,750 ولكن أعتقد أنه سيكون أسهل قليلا للنظر في * بجانب 602 00:31:40,750 --> 00:31:44,910 نوع البيانات كما يعني انها مؤشر إلى int في هذه الحالة. 603 00:31:44,910 --> 00:31:46,270 >> فماذا أفعل هنا؟ 604 00:31:46,270 --> 00:31:49,590 أنا أقول لا تعطيني الباحث تلاه الباحث آخر، 605 00:31:49,590 --> 00:31:50,810 دعوتهم أ و ب. 606 00:31:50,810 --> 00:31:52,460 تعطيني عنوان لكثافة العمليات. 607 00:31:52,460 --> 00:31:53,960 تعطيني عنوان كثافة آخر. 608 00:31:53,960 --> 00:31:56,330 استدعاء هؤلاء عناوين أ و ب. 609 00:31:56,330 --> 00:32:00,860 >> ثم باستخدام * تدوين أسفل أدناه، انتقل إلى كل من هذه العناوين 610 00:32:00,860 --> 00:32:05,290 حسب الحاجة إما إلى الحصول على أو تعيين القيمة الخاصة به. 611 00:32:05,290 --> 00:32:07,400 ولكن هناك استثناء هنا. 612 00:32:07,400 --> 00:32:11,130 لماذا لا يكون لديك * بجانب TMP؟ 613 00:32:11,130 --> 00:32:15,070 لماذا لا يمكنني القيام بذلك، على سبيل المثال؟ 614 00:32:15,070 --> 00:32:19,370 بدا الامر وكأننا يجب أن أذهب فقط كل خروج وتصحيح كل شيء. 615 00:32:19,370 --> 00:32:19,752 نعم؟ 616 00:32:19,752 --> 00:32:21,002 >> الحضور: [غير مسموع]. 617 00:32:21,002 --> 00:32:23,280 618 00:32:23,280 --> 00:32:25,480 >> سرور 1: أنا لم أعلن تمة كسلسلة. 619 00:32:25,480 --> 00:32:28,830 620 00:32:28,830 --> 00:32:34,950 ولذلك فإن هذا من شأنه أن تعلن، في هذه الحالة، وتمة لتكون عنوان لكثافة العمليات. 621 00:32:34,950 --> 00:32:37,380 ولكن هذا ليس تماما ما أريد، لبضعة أسباب. 622 00:32:37,380 --> 00:32:38,616 >> الحضور: أنت لا تريد مقايضتهم. 623 00:32:38,616 --> 00:32:41,800 >> سرور 1: بالضبط، وأنا لا أريد أن مبادلة أي شيء مع تمة. تمة هو مجرد 624 00:32:41,800 --> 00:32:42,790 الاشياء أسبوع واحد. 625 00:32:42,790 --> 00:32:45,150 كل ما أريده هو متغير لتخزين بعض الأرقام. 626 00:32:45,150 --> 00:32:47,330 أنا حتى لا يهتمون عناوين في هذه اللحظة. 627 00:32:47,330 --> 00:32:50,530 >> أنا فقط بحاجة 32 بت أو لذلك لتخزين عدد صحيح. 628 00:32:50,530 --> 00:32:56,690 وأريد أن أضع في تلك البتات 32 كل ما هو ليس في ذلك، إذا جاز التعبير، ولكن 629 00:32:56,690 --> 00:33:01,260 ما هو في ذلك، لمجرد أن يكون أكثر دقة. 630 00:33:01,260 --> 00:33:06,420 لأنه إذا كان هو عنوان، وسيلة * نذهب الى هناك والحصول على قيمة 1. 631 00:33:06,420 --> 00:33:10,560 على سبيل المثال، في المثال الأسبوع الماضي أو في حالة ب، والحصول على قيمة 2. 632 00:33:10,560 --> 00:33:11,750 >> وذلك ما يحدث في الواقع؟ 633 00:33:11,750 --> 00:33:15,070 اسمحوا لي هنا رسم صورة من شأنها أن إلا ندف عدا جزء من اليوم. 634 00:33:15,070 --> 00:33:18,580 ولكن هذا لن يستمر في الظهور لبعض الوقت. 635 00:33:18,580 --> 00:33:22,430 >> هذا، أزعم، هو ما جهاز الكمبيوتر الخاص بك الذاكرة يبدو عند تشغيل 636 00:33:22,430 --> 00:33:24,060 البرنامج، أي برنامج. 637 00:33:24,060 --> 00:33:28,340 عند تشغيل البرنامج في أعلى جدا من ذاكرة الوصول العشوائي جهاز الكمبيوتر الخاص بك - حتى التفكير في 638 00:33:28,340 --> 00:33:33,530 هذا المستطيل، حقا، ك RAM الكمبيوتر أو ذاكرة، وكلها 101 639 00:33:33,530 --> 00:33:36,920 مليار بايت، إلا أن كافة ملياري بايت، كل اثنين غيغابايت من ذلك، 640 00:33:36,920 --> 00:33:39,910 مهما كانت كمية ما عليك هو، دعونا استدراجه على شكل مستطيل. 641 00:33:39,910 --> 00:33:43,260 وأزعم أنه عند تشغيل برنامج مثل Microsoft Word أو كروم 642 00:33:43,260 --> 00:33:49,220 أو أي شيء من هذا القبيل، البتات التي كتب Microsoft أو أن جوجل - 643 00:33:49,220 --> 00:33:50,910 في حالات تلك البرامج - 644 00:33:50,910 --> 00:33:54,490 يتم تحميلها في ذاكرة الكمبيوتر الخاص بك حيث يمكن تنفيذ المزيد 645 00:33:54,490 --> 00:33:57,520 بسرعة وإدخالها في وحدة المعالجة المركزية، والتي هو العقل المدبر لجهاز الكمبيوتر. 646 00:33:57,520 --> 00:34:00,940 >> وفي TAM انهم المخزنة في غاية أعلى البرنامج الخاص بك، إذا جاز التعبير. 647 00:34:00,940 --> 00:34:03,300 وبعبارة أخرى، إذا كان هذا هو قطعة من الذاكرة، وعند النقر المزدوج على 648 00:34:03,300 --> 00:34:05,740 مايكروسوفت وورد، وتأتي بت قبالة القرص الصلب. 649 00:34:05,740 --> 00:34:06,680 الحصول على تحميلها في ذاكرة الوصول العشوائي. 650 00:34:06,680 --> 00:34:10,330 ونحن سوف يشق لهم حتى في أعلى جدا من الناحية النظرية هذا المستطيل. 651 00:34:10,330 --> 00:34:13,010 >> كذلك، والباقي من الذاكرة الخاصة بك هو تستخدم لأشياء مختلفة. 652 00:34:13,010 --> 00:34:16,460 في أعلى جدا ترى تهيئة البيانات وإلغاء تهيئتها. 653 00:34:16,460 --> 00:34:20,500 هذا له علاقة، بالنسبة للجزء الأكبر، مع الثوابت أو المتغيرات العالمية 654 00:34:20,500 --> 00:34:21,340 التي تحتوي على قيم. 655 00:34:21,340 --> 00:34:22,980 ولكن أكثر على تلك وقت آخر. 656 00:34:22,980 --> 00:34:25,150 >> ثم لديك كومة، والتي سوف نعود إلى. 657 00:34:25,150 --> 00:34:28,420 ولكن في الجزء السفلي هو الجزء الذي ل وثيق ولا سيما في الوقت الحالي. 658 00:34:28,420 --> 00:34:30,210 انها ما يسمى المكدس. 659 00:34:30,210 --> 00:34:33,850 لذلك مثلما هو الحال في معظم أي قاعة D هنا الحرم الجامعي، لديك تلك الصواني التي 660 00:34:33,850 --> 00:34:37,210 مجرد كومة فوق بعضها البعض التي يمكنك وضع الطعام وغيرها. 661 00:34:37,210 --> 00:34:40,139 مكدس في نظام الكمبيوتر هي مشابهة جدا. 662 00:34:40,139 --> 00:34:42,679 إلا حين الدرج، كما نستخدمها في قاعة الطعام، بطبيعة الحال، هو المقصود 663 00:34:42,679 --> 00:34:45,710 لحمل الأشياء الصواني أو الأطر - 664 00:34:45,710 --> 00:34:49,469 ونحن سوف ندعو لهم - في الكمبيوتر يتم استخدام الذاكرة لعقد 665 00:34:49,469 --> 00:34:51,610 المتغيرات والقيم. 666 00:34:51,610 --> 00:34:53,929 >> وذلك ما يذهب حقا على تحت غطاء محرك السيارة؟ 667 00:34:53,929 --> 00:34:55,820 حسنا، اسمحوا لي أن اقلب إلى الشاشة هنا. 668 00:34:55,820 --> 00:34:58,370 ودعونا نركز فقط على الجزء السفلي للحظة. 669 00:34:58,370 --> 00:35:02,770 إذا كان هذا هو الجزء السفلي من بلدي ذاكرة الكمبيوتر اتضح عندما كنت 670 00:35:02,770 --> 00:35:05,350 استدعاء الدالة الرئيسية - والذي يحدث، وبصراحة، 671 00:35:05,350 --> 00:35:06,950 تلقائيا بالنسبة لي - 672 00:35:06,950 --> 00:35:10,510 أحصل على قطعة من الذاكرة في السفلي من ذاكرة الوصول العشوائي بلدي إذا جاز التعبير. 673 00:35:10,510 --> 00:35:13,390 وهذا هو المكان الرئيسي المتغيرات المحلية تذهب. 674 00:35:13,390 --> 00:35:16,770 حيث انها ARGC وربما ARGV تذهب، وأية متغيرات أنا 675 00:35:16,770 --> 00:35:18,170 تعلن داخل الرئيسي. 676 00:35:18,170 --> 00:35:20,260 أنهم في نهاية المطاف في الجزء السفلي من ذاكرة الوصول العشوائي جهاز الكمبيوتر الخاص بي. 677 00:35:20,260 --> 00:35:25,040 >> الآن لنفترض أن يدعو الرئيسي وظيفة أحب المبادلة، مثل ما فعلت الأسبوع الماضي؟ 678 00:35:25,040 --> 00:35:30,620 حسنا، وضعنا أساسا صينية جديدة، و إطار جديد، على بلدي قطعة من الذاكرة. 679 00:35:30,620 --> 00:35:34,160 وانا ذاهب لوصف ذلك بأنه ينتمون إلى وظيفة المبادلة. 680 00:35:34,160 --> 00:35:35,770 >> الآن ما هو داخل المبادلة؟ 681 00:35:35,770 --> 00:35:39,240 كذلك، على أساس برنامج الأسبوع الماضي و واحد رأينا مجرد مقتطفات من، 682 00:35:39,240 --> 00:35:46,590 داخل إطار المبادلة، أو على مبادلة لل علبة، هي ما المتغيرات؟ 683 00:35:46,590 --> 00:35:47,970 حسنا، أ و ب. 684 00:35:47,970 --> 00:35:51,850 لأن تلك كانت الحجج المحلية، بالإضافة إلى الثلث، تمة. 685 00:35:51,850 --> 00:35:54,470 لذلك حقا، وأنا يمكن أن يوجه هذا أكثر من ذلك بقليل نظيفة. 686 00:35:54,470 --> 00:35:56,680 اسمحوا لي المضي قدما والتراجع عن التسمية. 687 00:35:56,680 --> 00:35:58,520 واسمحوا لي أن تدعي أنك تعرف لماذا؟ 688 00:35:58,520 --> 00:36:00,560 >> وربما لن ينتهي هنا. 689 00:36:00,560 --> 00:36:02,160 B هو الذهاب الى نهاية المطاف هنا. 690 00:36:02,160 --> 00:36:03,810 وتمة هو الذهاب الى نهاية المطاف هنا. 691 00:36:03,810 --> 00:36:05,160 الآن، ربما ترتيب تكون مختلفة قليلا. 692 00:36:05,160 --> 00:36:06,840 ولكن من الناحية المفاهيمية هذه هي الفكرة. 693 00:36:06,840 --> 00:36:11,490 >> وفقط بشكل جماعي، وهذا هو ما وسوف ندعو الإطار المبادلة، وأو 694 00:36:11,490 --> 00:36:12,136 الطعام قاعة الدرج. 695 00:36:12,136 --> 00:36:13,150 ونفس الصفقة مع الرئيسي. 696 00:36:13,150 --> 00:36:14,040 ولكن أنا لن رسم ذلك. 697 00:36:14,040 --> 00:36:17,810 ولكن هذا حيث ARGC وARGV وأي المتغيرات المحلية مثل x و y 698 00:36:17,810 --> 00:36:18,940 قد يكون كذلك. 699 00:36:18,940 --> 00:36:22,170 >> لذلك نعتبر الآن ما يحدث حقا عند استدعاء المبادلة. 700 00:36:22,170 --> 00:36:26,370 عند استدعاء المبادلة، تنفيذ التعليمات البرمجية مثل هذا، وأنت تمر في، في 701 00:36:26,370 --> 00:36:30,670 الإصدار عربات التي تجرها الدواب، أ و ب كما نسخ من x و y. 702 00:36:30,670 --> 00:36:34,300 حتى لو لم يوجه هذا الآن على الشاشة - 703 00:36:34,300 --> 00:36:36,700 حصلت على الحصول على أفضل في هذا - 704 00:36:36,700 --> 00:36:40,850 وبالتالي فإن القصة كنت أقول لنفسي وكان في هذا الإصدار عربات التي تجرها الدواب، ونحن عندما 705 00:36:40,850 --> 00:36:46,130 استدعاء مبادلة يمر في حرفيا أ و ب أنها أعداد صحيحة، ما يحدث حقا؟ 706 00:36:46,130 --> 00:36:48,250 >> حسنا، ما الذي يحدث حقا هو هذا. 707 00:36:48,250 --> 00:36:52,850 اسمحوا لي المضي قدما والتراجع فقط لمسح بعض المساحة هنا. 708 00:36:52,850 --> 00:36:54,720 لذلك هذا هو ذاكرة جهاز الكمبيوتر الخاص بي. 709 00:36:54,720 --> 00:36:57,510 >> حتى إذا كان لدي، على سبيل المثال - 710 00:36:57,510 --> 00:36:58,910 دعونا نفعل ذلك فعلا بهذه الطريقة - 711 00:36:58,910 --> 00:37:02,690 إذا كنت تدعي أن هذا هو العاشر، وتخزين قيمة 1 تماما مثل الاسبوع الماضي. 712 00:37:02,690 --> 00:37:05,930 وهذا هو ذ، تخزين قيمة 2 تماما مثل الاسبوع الماضي. 713 00:37:05,930 --> 00:37:11,370 وهذا هو الرئيسي، وعندما أدعو المبادلة، وبالتالي إعطاء نفسي الوصول إلى و 714 00:37:11,370 --> 00:37:15,150 ب وتمة، انا ذاهب الى الادعاء بأن هذا هو وهذا هو 1. 715 00:37:15,150 --> 00:37:16,080 >> هذا هو ب. 716 00:37:16,080 --> 00:37:17,010 هذا هو 2. 717 00:37:17,010 --> 00:37:18,370 وهذا ما يسمى تمة. 718 00:37:18,370 --> 00:37:23,360 >> ومبدئيا، فإن له بعض القيمة القمامة حتى أنا فعلا تخزين في ذلك لذلك، 719 00:37:23,360 --> 00:37:24,450 الذي هو 1. 720 00:37:24,450 --> 00:37:28,320 ثم أذهب إلى الأمام والتغيير على أن يكون ماذا؟ 721 00:37:28,320 --> 00:37:29,720 القيمة ب. 722 00:37:29,720 --> 00:37:31,980 >> وحتى الآن لدي اثنين هنا. 723 00:37:31,980 --> 00:37:34,050 ثم قلنا ب يحصل تمة. 724 00:37:34,050 --> 00:37:37,670 مرة أخرى، تماما كما شيك التعقل، والثالثة سطر من التعليمات البرمجية هنا هو ببساطة هذا 725 00:37:37,670 --> 00:37:39,440 واحد، ب يحصل تمة. 726 00:37:39,440 --> 00:37:41,730 >> وهكذا أخيرا، ماذا أفعل؟ 727 00:37:41,730 --> 00:37:46,800 أذهب إلى الأمام وتغيير ب أن يكون مهما قيمة تمة هو، والذي هو 1. 728 00:37:46,800 --> 00:37:48,390 أنا لا تلمس تمة مرة أخرى. 729 00:37:48,390 --> 00:37:54,100 >> ولكن الآن، والمشكلة هي في أقرب وقت المبادلة يعود، لأنه لا تسليم 730 00:37:54,100 --> 00:37:57,540 يعود بعض القيمة، وليس هناك عودة بيان صريح في ذلك. 731 00:37:57,540 --> 00:37:59,080 ما يحدث في الواقع؟ 732 00:37:59,080 --> 00:38:03,480 حسنا، أساسا كل هذه الذاكرة - 733 00:38:03,480 --> 00:38:07,410 موافق، على ما يبدو يحب الممحاة إصبع واحد فقط في المرة الواحدة - 734 00:38:07,410 --> 00:38:08,180 يختفي تماما. 735 00:38:08,180 --> 00:38:10,070 >> الآن في واقع الأمر ليست أذهب إلى أي مكان. 736 00:38:10,070 --> 00:38:11,810 ولكن يمكنك التفكير في الأمر الآن كعلامات استفهام. 737 00:38:11,810 --> 00:38:14,040 لأنه لم يعد فعلا في الاستخدام. 738 00:38:14,040 --> 00:38:17,470 ويتم عمل شيء مع تلك القيم. 739 00:38:17,470 --> 00:38:21,920 >> حتى في حالة إصدار الخضراء هذا الرمز، بدلا ما يجري 740 00:38:21,920 --> 00:38:24,640 مرت في المبادلة؟ 741 00:38:24,640 --> 00:38:25,770 حتى العناوين. 742 00:38:25,770 --> 00:38:28,520 وبالتالي فإن عنوان x و عنوان ذ. 743 00:38:28,520 --> 00:38:35,790 إذا كان الأمر كذلك نعيد أقول هذه القصة واحدة مشاركة الوقت، وأنا في الواقع رسم مبادلة مرة أخرى، 744 00:38:35,790 --> 00:38:44,620 ولكن مع مؤشرات، وهذا كونه، وهذا يجري ب، وهذا يجري تمة، ما هو 745 00:38:44,620 --> 00:38:49,080 المخزنة في الواقع في في هذا الخضراء إصدار قانون بلدي حيث أنا يمر 746 00:38:49,080 --> 00:38:52,110 في عناوين؟ 747 00:38:52,110 --> 00:38:53,780 >> انها سوف تكون مؤشر إلى x. 748 00:38:53,780 --> 00:38:54,890 حتى أتمكن من رسم السهم. 749 00:38:54,890 --> 00:38:57,310 ولكن دعونا استخدام نفس التعسفي المثال كما كان من قبل. 750 00:38:57,310 --> 00:39:01,220 دعنا نقول أن هذا هو شيء من هذا القبيل Ox123. 751 00:39:01,220 --> 00:39:04,970 وهذا سيكون Ox127 ل انها اربعة بايت بعيدا لانها 752 00:39:04,970 --> 00:39:07,370 الباحث، لذلك Ox127. 753 00:39:07,370 --> 00:39:09,080 >> ومرة أخرى، أنا أخذ بعض الحريات مع الأرقام. 754 00:39:09,080 --> 00:39:11,430 انهم أصغر بكثير مما لو كانوا يكون في الواقع وبترتيب مختلف. 755 00:39:11,430 --> 00:39:14,350 ولكن هذه هي الطريقة الصورة الآن مختلفة. 756 00:39:14,350 --> 00:39:19,060 >> ولكن عند استخدام هذا الرمز الأخضر وأنا لا الباحث تمة عليه * أ. 757 00:39:19,060 --> 00:39:25,010 * وسيلة للقيام بما يلي، واتخاذ معالجة هذا في وتذهب إليها، 758 00:39:25,010 --> 00:39:26,190 الذي هو 1. 759 00:39:26,190 --> 00:39:28,480 وهذا ما أنا ثم وضع في تمة. 760 00:39:28,480 --> 00:39:32,480 وفي الوقت نفسه، في السطر التالي من التعليمات البرمجية هنا، * ويحصل ب، ماذا يعني ذلك؟ 761 00:39:32,480 --> 00:39:36,910 >> حسنا، * لذلك، لذلك يذهب هنا يحصل * ب، وهو ما يعني الذهاب إلى هناك. 762 00:39:36,910 --> 00:39:39,310 وهذا يعني وضع القيمة إلى هناك. 763 00:39:39,310 --> 00:39:43,670 أخيرا، السطر الأخير من التعليمات البرمجية قال ببساطة * ب يحصل تمة. 764 00:39:43,670 --> 00:39:48,900 >> ذلك ب يقول نذهب الى هناك والكتابة مع تمة الذي، في هذه الحالة، يجري 765 00:39:48,900 --> 00:39:51,520 أن يكون، مرة أخرى، 1. 766 00:39:51,520 --> 00:39:54,920 وهذا هو السبب في أن النسخة الخضراء يعمل الكود، في حين أن الأحمر 767 00:39:54,920 --> 00:39:56,010 نسخة لم يفعل. 768 00:39:56,010 --> 00:39:59,020 كل شيء يغلي فقط وصولا الى كيفية تتم إدارة الذاكرة وحيث انها 769 00:39:59,020 --> 00:40:02,580 وضعت فعلا في حياتك ذاكرة الوصول العشوائي بالكمبيوتر. 770 00:40:02,580 --> 00:40:07,270 وحتى الآن، وهذا واحد من الأشياء ان مكدس يتم استخدامه ل. 771 00:40:07,270 --> 00:40:09,225 >> أسئلة حول التخطيط؟ 772 00:40:09,225 --> 00:40:10,380 على المؤشرات؟ 773 00:40:10,380 --> 00:40:11,630 أو على المبادلة؟ 774 00:40:11,630 --> 00:40:13,740 775 00:40:13,740 --> 00:40:17,043 >> كل الحق، لذلك malloc، أذكر، فعلت شيئا من هذا القبيل. 776 00:40:17,043 --> 00:40:18,260 كان هذا مثال بسيط السوبر. 777 00:40:18,260 --> 00:40:20,550 وكان هذا واحد أن بينكي قدم لنا، وإن كان تماما 778 00:40:20,550 --> 00:40:21,870 بسرعة، في نهاية الصف. 779 00:40:21,870 --> 00:40:24,480 اللعنة، نذهب هناك مرة أخرى. 780 00:40:24,480 --> 00:40:28,780 >> لذلك نذكر أن هذا هو المثال الذي قدم لنا بينكي ل، وإن كان 781 00:40:28,780 --> 00:40:30,360 بسرعة إلى حد ما في نهاية الصف. 782 00:40:30,360 --> 00:40:33,640 وهنا كنا حقا malloc للمرة الثانية. 783 00:40:33,640 --> 00:40:37,330 لأن المرة الأولى التي تستخدم ل خلق ما يكفي من ذاكرة الوصول العشوائي، وتخصيص ما يكفي من ذاكرة الوصول العشوائي 784 00:40:37,330 --> 00:40:38,340 لتخزين سلسلة. 785 00:40:38,340 --> 00:40:40,250 >> هذه المرة بينكي أبقاها بسيطة. 786 00:40:40,250 --> 00:40:42,465 لذلك فمن لتخزين فقط عدد صحيح، على ما يبدو. 787 00:40:42,465 --> 00:40:43,510 وهذا هو بخير تماما. 788 00:40:43,510 --> 00:40:46,560 انها غريبة بعض الشيء، وبصراحة، ل استخدام malloc للتخصيص كثافة واحدة. 789 00:40:46,560 --> 00:40:50,650 ولكن وجهة claymation نيك كان في الحقيقة مجرد إخبار قصة ما 790 00:40:50,650 --> 00:40:53,830 يحدث أو لا يحدث عندما كنت يسيئون معاملة الذاكرة. 791 00:40:53,830 --> 00:40:56,520 >> حتى في هذه الحالة، وهذا البرنامج فعلت بعض الأشياء. 792 00:40:56,520 --> 00:41:01,580 في الحالة الأولى هنا، فإنها تعلن مؤشر يسمى العاشر إلى int. 793 00:41:01,580 --> 00:41:04,480 بعد ذلك يعلن مؤشر دعا ذ إلى int. 794 00:41:04,480 --> 00:41:06,150 بعد ذلك مخازن في العاشر، ما هي؟ 795 00:41:06,150 --> 00:41:07,110 شخص آخر الآن. 796 00:41:07,110 --> 00:41:09,685 ما يحصل المخزنة في x وفقا ل السطر الثالث من هذا البرنامج؟ 797 00:41:09,685 --> 00:41:12,380 >> الحضور: [غير مسموع]. 798 00:41:12,380 --> 00:41:14,130 >> سرور 1: حسنا، ليس تماما بايت، في القول. 799 00:41:14,130 --> 00:41:16,760 نكون أكثر دقة الآن. 800 00:41:16,760 --> 00:41:18,325 ما يحصل المخزنة في x؟ 801 00:41:18,325 --> 00:41:21,000 802 00:41:21,000 --> 00:41:22,060 عنوان، وأعتقد أنني سمعت ذلك. 803 00:41:22,060 --> 00:41:23,570 >> فماذا malloc العودة؟ 804 00:41:23,570 --> 00:41:26,030 يخصص malloc سلوكيا قطعة من الذاكرة. 805 00:41:26,030 --> 00:41:27,850 ولكن كيف أنها لا تعطيك الوصول إلى ذلك؟ 806 00:41:27,850 --> 00:41:29,460 فإنها ترجع ماذا؟ 807 00:41:29,460 --> 00:41:32,000 عنوان البايت الأول في جزء من الذاكرة. 808 00:41:32,000 --> 00:41:33,020 >> الآن، وهذا هو السوبر سهلة. 809 00:41:33,020 --> 00:41:35,380 انها بايت واحد فقط، مما يعني أن نحن نحصل على عنوان العودة هو 810 00:41:35,380 --> 00:41:37,300 عنوان من كل شيء. 811 00:41:37,300 --> 00:41:42,070 حتى المخزنة في x ثم، هو عنوان ذلك جزء من الذاكرة. 812 00:41:42,070 --> 00:41:43,400 وفي الوقت نفسه، ما يحدث بعد ذلك؟ 813 00:41:43,400 --> 00:41:45,890 ذلك الواقع، دعونا نمضي قدما و رسم هذا الخروج بسرعة حقيقية. 814 00:41:45,890 --> 00:41:52,490 >> حتى إذا نذهب أكثر إلى الشاشة هنا و نحن نلعب من ذلك كثافة * x و كثافة * ذ 815 00:41:52,490 --> 00:41:53,740 هو ذاهب لتفعل ما بالنسبة لي؟ 816 00:41:53,740 --> 00:41:58,280 أزعم أنه مجرد تنوي القيام به شيء من هذا القبيل والذي يطلق عليه السينية، و 817 00:41:58,280 --> 00:42:00,010 هذا والذي يطلق عليه ذ. 818 00:42:00,010 --> 00:42:03,110 وفي الوقت نفسه، السطر الثالث من التعليمات البرمجية الذهاب الى تخصيص حجم وكثافة العمليات، 819 00:42:03,110 --> 00:42:06,160 والذي يحدث أن تكون - آسف إذا قلت واحدة قبل قصدته كثافة واحدة - 820 00:42:06,160 --> 00:42:08,280 أربعة بايت على جهاز كمبيوتر نموذجي. 821 00:42:08,280 --> 00:42:09,720 على الأقل مع الأجهزة CS50. 822 00:42:09,720 --> 00:42:11,490 >> لذلك هذا هو الذهاب الى تخصيص ذلك، من يدري؟ 823 00:42:11,490 --> 00:42:12,800 في مكان ما هنا. 824 00:42:12,800 --> 00:42:15,780 وهذا يتم تخزينها في بعض معالجة الثور، من يدري؟ 825 00:42:15,780 --> 00:42:18,330 ولكن ما يحدث أن يحصل عاد هو هذا العنوان. 826 00:42:18,330 --> 00:42:22,270 ولكننا سوف يوجه هذا بالصور بوصفه مجرد السهم من هذا القبيل. 827 00:42:22,270 --> 00:42:25,430 >> الآن في السطر التالي * س يحصل 42. 828 00:42:25,430 --> 00:42:29,400 ماذا * س يعني في شروط للشخص العادي؟ 829 00:42:29,400 --> 00:42:30,040 مجرد الذهاب إلى هناك. 830 00:42:30,040 --> 00:42:30,960 انتقل إلى هذا العنوان. 831 00:42:30,960 --> 00:42:35,900 أو بعبارة أخرى، اتبع سهم وضعت 42 هناك. 832 00:42:35,900 --> 00:42:38,140 ولكن بعد ذلك حدث شيء سيء لبينكي، أليس كذلك؟ 833 00:42:38,140 --> 00:42:43,950 >> أذكر هذا الخط خمسة هنا، * ذ يحصل 13، في الواقع عدد سيئ الحظ، 834 00:42:43,950 --> 00:42:44,760 فعلت ما بالنسبة لنا؟ 835 00:42:44,760 --> 00:42:47,320 حسنا، * ذ يعني الذهاب إلى هناك. 836 00:42:47,320 --> 00:42:50,460 كذلك، لم يعط هذا قيمة بعد، أليس كذلك؟ 837 00:42:50,460 --> 00:42:54,090 لايوجد رمز ذ يجري تهيئة إلى أي شيء. 838 00:42:54,090 --> 00:42:56,120 كنا قد س يتم تهيئة إلى عنوان. 839 00:42:56,120 --> 00:42:57,640 ولكن أعلن ذ حتى أعلى. 840 00:42:57,640 --> 00:43:00,250 ولكن بعد ذلك فاصلة منقوطة، لا قيمة وقد وضعت فعلا في ذلك. 841 00:43:00,250 --> 00:43:02,330 لذلك فمن الإنصاف أن نسمي هذا قيمة القمامة. 842 00:43:02,330 --> 00:43:03,430 من يدري ما هو هناك؟ 843 00:43:03,430 --> 00:43:07,160 انها بقايا من البتات التي تم استخدامها بعض السطر السابق من التعليمات البرمجية في 844 00:43:07,160 --> 00:43:08,300 برنامجي. 845 00:43:08,300 --> 00:43:13,250 >> لذلك إذا قلت أذهب إلى هناك، وهذا هو مثل، ليس لدي أي فكرة من أين هذا السهم 846 00:43:13,250 --> 00:43:14,490 الذهاب الى نهاية المطاف. 847 00:43:14,490 --> 00:43:17,720 وهذا عادة عند الحصول على خطأ تجزئة. 848 00:43:17,720 --> 00:43:22,430 إذا كنت غير قصد إلغاء مرجعية، وذلك ل الكلام، أو يذهب إلى عنوان هذا ليس 849 00:43:22,430 --> 00:43:25,400 في الواقع عنوان المشروعة، تحدث أمور سيئة. 850 00:43:25,400 --> 00:43:27,550 >> وهذا هو بالضبط ما حدث التفكير بينكي. 851 00:43:27,550 --> 00:43:31,060 لذلك نذكر بأن القصة التي كان نيك نقول هنا ان نفس الفكرة مثل ما 852 00:43:31,060 --> 00:43:34,050 لقد تعادل مع الوهم الطباشير على السبورة هناك. 853 00:43:34,050 --> 00:43:35,960 وأعلن X و y. 854 00:43:35,960 --> 00:43:39,690 >> ثم أننا تخصيص حجم عدد صحيح وتخزينها في العاشر. 855 00:43:39,690 --> 00:43:42,130 ثم السطر التالي فعلنا * س. 856 00:43:42,130 --> 00:43:46,070 كان هذا عصا سحرية نيك من يعتبر إلغاء مرجعية. 857 00:43:46,070 --> 00:43:49,780 التي وضعت 42 في الذاكرة أشار س. 858 00:43:49,780 --> 00:43:51,600 >> ولكن هذا هو المكان الأشياء ذهب خاطئ. 859 00:43:51,600 --> 00:43:51,820 أليس كذلك؟ 860 00:43:51,820 --> 00:43:53,550 حاولنا أن إلغاء مرجعية ذ. 861 00:43:53,550 --> 00:43:55,620 ولكن ذ له بعض القيمة وهمية، أليس كذلك؟ 862 00:43:55,620 --> 00:43:57,720 >> أن السهم في الأيسر السفلي الزاوية، ليس 863 00:43:57,720 --> 00:43:58,950 مشيرا في الواقع إلى أي شيء. 864 00:43:58,950 --> 00:44:01,520 انها نوع من يفعل ماذا أنا فعلت هنا على متن الطائرة. 865 00:44:01,520 --> 00:44:05,900 لذلك تحدث أمور سيئة، وتجزئة خطأ، أو خطأ بينكي، في هذه الحالة. 866 00:44:05,900 --> 00:44:10,800 >> ولكن إذا كنا ثم تحديد ذلك عن طريق القيام خ ذ كيف يحصل تغيير القصة؟ 867 00:44:10,800 --> 00:44:15,760 حسنا، إذا كنت تفعل خ ذ يحصل، وهذا فعال نفس قوله 868 00:44:15,760 --> 00:44:19,235 أيا كان هذا هو، الثور، وهو شيء سوف تكون هي نفسها هنا، 869 00:44:19,235 --> 00:44:20,080 ثور شيء. 870 00:44:20,080 --> 00:44:22,970 بالصور أو سنقوم رسم السهم. 871 00:44:22,970 --> 00:44:25,530 >> حتى هنا على متن الطائرة مع بينكي، مع السطر التالي من 872 00:44:25,530 --> 00:44:28,350 رمز، ذ * يعني الذهاب إلى هناك. 873 00:44:28,350 --> 00:44:29,400 حيث هناك؟ 874 00:44:29,400 --> 00:44:30,820 وهو ما يعني أكثر من هنا. 875 00:44:30,820 --> 00:44:36,050 >> وعندما نقوم بتحديث ذلك لتكون 13 انها مجرد ينطوي على الذهاب و 876 00:44:36,050 --> 00:44:39,470 كتابة 13 هنا الآن. 877 00:44:39,470 --> 00:44:44,130 لذلك ربما ليس تماما واضحة للوهلة الأولى. 878 00:44:44,130 --> 00:44:47,740 ولكن لنلخص واستخدام نفس المصطلحات بينكي أن تستخدم هنا، لذلك 879 00:44:47,740 --> 00:44:50,485 أول اثنين من تخصيص المؤشرات، x و y، ولكن ليس pointees. 880 00:44:50,485 --> 00:44:54,750 وpointees ليس مصطلح يستخدم عموما. 881 00:44:54,750 --> 00:44:56,120 لكن مؤشر على الاطلاق. 882 00:44:56,120 --> 00:44:59,200 ولكن هذا ما يجري وأشار في التسميات في بينكي و. 883 00:44:59,200 --> 00:45:01,660 >> هذا السطر التالي، بطبيعة الحال، يخصص الباحث pointee. 884 00:45:01,660 --> 00:45:04,840 ذلك جزءا من الذاكرة - كما وجهت أكثر من يوم على الجانب الأيمن هناك - وتعيين 885 00:45:04,840 --> 00:45:06,470 س مساويا للإشارة إلى ذلك. 886 00:45:06,470 --> 00:45:11,350 هذا dereferences العاشر لتخزين 42 في الذاكرة التي انها لافتا في. 887 00:45:11,350 --> 00:45:13,380 ثم هذا، بطبيعة الحال، كان أمرا سيئا. 888 00:45:13,380 --> 00:45:15,600 لأن ذ لم يكن لافتا في أي شيء حتى الآن. 889 00:45:15,600 --> 00:45:16,530 هذا يصلح له. 890 00:45:16,530 --> 00:45:18,240 لذلك هذا لا يزال برنامج عربات التي تجرها الدواب. 891 00:45:18,240 --> 00:45:21,580 فقط لأننا تهب من خلال سطر التعليمات البرمجية عن طريق خط والمثل، يا جيدا، 892 00:45:21,580 --> 00:45:22,690 ندعه يتلف هناك. 893 00:45:22,690 --> 00:45:23,420 هذا شيء سيء. 894 00:45:23,420 --> 00:45:26,790 خلاف والبرنامج مجرد الذهاب الى إحباط تماما في هذا الخط. 895 00:45:26,790 --> 00:45:30,550 ولكن إذا كانت لإزالة تحطمت خط واستبدالها الماضيين 896 00:45:30,550 --> 00:45:32,470 هناك خطوط تعيين - 897 00:45:32,470 --> 00:45:35,310 باستخدام مؤشر الاحالة - ذ أن نشير إلى x كنقطة ر. 898 00:45:35,310 --> 00:45:39,280 ومن ثم يمكنك إلغاء مرجعية ذ بطريقة آمنة جدا. 899 00:45:39,280 --> 00:45:41,520 >> فأين هذا لا يترك لنا؟ 900 00:45:41,520 --> 00:45:45,350 كذلك، تبين أن تحت غطاء محرك السيارة في المكتبة CS50، مؤشرات هي 901 00:45:45,350 --> 00:45:46,320 المستخدمة في جميع أنحاء. 902 00:45:46,320 --> 00:45:48,910 وسنبدأ فعلا لقشر دعم تلك الطبقة قبل فترة طويلة. 903 00:45:48,910 --> 00:45:51,740 ولكن تبين أيضا، تعبير البعض منكم قد يكون على دراية، 904 00:45:51,740 --> 00:45:54,580 ولا سيما تلك أكثر راحة، هو في الواقع أن من شعبية جدا 905 00:45:54,580 --> 00:45:56,390 الموقع، أو تجاوز سعة مكدس، في هذه الأيام. 906 00:45:56,390 --> 00:45:58,720 >> ولكن هذا في الواقع جدا معنى تقني. 907 00:45:58,720 --> 00:46:00,160 نحن نعرف الآن ما هو المكدس. 908 00:46:00,160 --> 00:46:02,550 انها مثل كومة من الصواني داخل قاعة لتناول الطعام. 909 00:46:02,550 --> 00:46:05,140 >> أو داخل جهاز الكمبيوتر الخاص بك ذاكرته تلك الأطر 910 00:46:05,140 --> 00:46:06,900 التي يتم استخدامها بواسطة وظائف. 911 00:46:06,900 --> 00:46:10,760 كذلك، اتضح أنه بسبب ذلك تنفيذ بسيطة جدا لل 912 00:46:10,760 --> 00:46:14,970 الذاكرة والإطارات على ما يسمى مكدس، يمكنك أن تأخذ في الواقع السيطرة 913 00:46:14,970 --> 00:46:17,050 نظام الكمبيوتر بسهولة إلى حد ما. 914 00:46:17,050 --> 00:46:22,180 يمكنك تقتحم نظام إذا كان الناس مثلنا لم تكتب رمز لنا 915 00:46:22,180 --> 00:46:23,300 بشكل خاص. 916 00:46:23,300 --> 00:46:26,670 >> إذا كان الناس مثلنا استخدام قطع من الذاكرة أو استخدام المصفوفات - 917 00:46:26,670 --> 00:46:27,810 حتى أكثر شيوعا - 918 00:46:27,810 --> 00:46:31,800 ولكن في بعض الأحيان ننسى للتحقق من لدينا مجموعة من الحدود كما كنت قد 919 00:46:31,800 --> 00:46:38,470 لديك نفسك في بعض الأحيان، وتكرارية الطريق بعيدا جدا بعد نهاية صفيف. 920 00:46:38,470 --> 00:46:40,520 في أفضل الأحوال، برنامجك قد يتلف فقط. 921 00:46:40,520 --> 00:46:42,280 خطأ تجزئة، النوع من محرجة. 922 00:46:42,280 --> 00:46:45,480 ليست كبيرة، لكنها ليست بالضرورة شيئا سيئا للغاية. 923 00:46:45,480 --> 00:46:49,480 >> ولكن إذا كان البرنامج هو في الواقع الحقيقي على أجهزة المستخدمين، إذا انها تعمل 924 00:46:49,480 --> 00:46:53,070 على موقع على شبكة الانترنت أن الناس بشكل عشوائي الفعلية على شبكة الانترنت هي ضرب، والسماح 925 00:46:53,070 --> 00:46:56,690 الناس أشياء سيئة لحث على التعليمات البرمجية غير عموما ليس شيئا جيدا ل 926 00:46:56,690 --> 00:46:59,930 ذلك يعني فرصة ل السيطرة على جهاز الكمبيوتر. 927 00:46:59,930 --> 00:47:01,350 وهذا هو الذهاب الى نظرة خفي قليلا. 928 00:47:01,350 --> 00:47:04,570 لكنني اعتقدت أن تخويف لكم مع هذا المثال الأخير هنا. 929 00:47:04,570 --> 00:47:05,650 >> وهنا مثال من التعليمات البرمجية. 930 00:47:05,650 --> 00:47:07,370 وهناك ويكيبيديا جيدة المادة أن يمشي من خلال 931 00:47:07,370 --> 00:47:08,530 هذا بمزيد من التفصيل. 932 00:47:08,530 --> 00:47:13,890 لدي الرئيسي على الدعوة القاع فو، ويمر في ARGV 1. 933 00:47:13,890 --> 00:47:15,750 وهذا مجرد بحيث يمكنك تشغيل البرنامج وتمرير 934 00:47:15,750 --> 00:47:17,080 مدخلا التعسفي. 935 00:47:17,080 --> 00:47:20,180 >> ثم يتم التصريح فو حتى أعلى كما تقبل سلسلة أو أكثر 936 00:47:20,180 --> 00:47:21,700 على وجه التحديد، وشار *. 937 00:47:21,700 --> 00:47:23,860 بعد ذلك يعلن مجموعة من الأحرف. 938 00:47:23,860 --> 00:47:27,130 يطلق عليه منطقة عازلة، وبصورة أعم، من حجم 12. 939 00:47:27,130 --> 00:47:30,900 حتى 12 حرف يمكن احتواؤه لذلك دعا مجموعة ج. 940 00:47:30,900 --> 00:47:33,510 >> وبعد ذلك يستخدم هذه الوظيفة الجديدة، وهو جديد ولكن ليس من الصعب 941 00:47:33,510 --> 00:47:34,930 فهم، نسخة الذاكرة. 942 00:47:34,930 --> 00:47:39,290 فإنه ينسخ الذاكرة من شريط، والذي كان الماضي ن متغير، مهما كانت 943 00:47:39,290 --> 00:47:42,080 كتبته المستخدم في ARGV 1 في ج. 944 00:47:42,080 --> 00:47:43,090 كم عدد وحدات البايت؟ 945 00:47:43,090 --> 00:47:44,260 طول سلسلة من العارضة. 946 00:47:44,260 --> 00:47:48,380 >> لذلك وبعبارة أخرى، إذا كان المستخدم في أنواع ح-E-L-L-O دخول، طول السلسلة 947 00:47:48,380 --> 00:47:49,260 مرحبا من خمسة. 948 00:47:49,260 --> 00:47:52,790 لذلك خمسة من تلك بايت هو الذهاب الى الحصول نسخ في مجموعة تسمى ج، والتي 949 00:47:52,790 --> 00:47:54,110 هو من حجم 12. 950 00:47:54,110 --> 00:47:58,710 ولكن ما أنواع المستخدم في أطول بكثير الكلمة التي من 13 حرفا أو 14 951 00:47:58,710 --> 00:48:01,250 حرفا أو 100 حرفا أو أكثر من ذلك؟ 952 00:48:01,250 --> 00:48:02,660 >> حيث هم ذاهبون أن تذهب؟ 953 00:48:02,660 --> 00:48:06,090 حسنا، هذا الإطار، أن علبة في كومة الطعام القاعة، 954 00:48:06,090 --> 00:48:06,930 انهم ذاهبون للذهاب إلى هناك. 955 00:48:06,930 --> 00:48:10,080 وانها مجرد الذهاب الى بدء الكتابة غيرها من الاشياء وهذا بالفعل 956 00:48:10,080 --> 00:48:12,880 على أن المكدس، تفيض المكدس، إذا جاز التعبير. 957 00:48:12,880 --> 00:48:14,780 >> لذلك بالصور، والتفكير في الامر بهذه الطريقة. 958 00:48:14,780 --> 00:48:17,970 هذا هو مجرد نسخة ملونة من الصورة كنا الرسم. 959 00:48:17,970 --> 00:48:20,060 في الجزء السفلي، دعنا نقول، هو الرئيسي. 960 00:48:20,060 --> 00:48:24,690 وعلى رأس ما ترونه الآن والإطار، ونا مميزا الآن، ل 961 00:48:24,690 --> 00:48:26,090 وظيفة تسمى فو. 962 00:48:26,090 --> 00:48:30,170 ولكن ما هو مثير للاهتمام هنا عن فو هو أن هنا هو إطاره. 963 00:48:30,170 --> 00:48:32,860 حتى انها سحبت منه فقط وكأنني فعلت ولكن في اللون الأزرق الفاتح. 964 00:48:32,860 --> 00:48:35,220 والآن هذا هو المكان ج قوس 0 يذهب. 965 00:48:35,220 --> 00:48:37,410 وهذا هو المكان ج قوس 11 هو الذهاب الى نهاية المطاف. 966 00:48:37,410 --> 00:48:39,670 >> وبعبارة أخرى، فإنه يحدث ل تكون ممثلة على النحو مربع. 967 00:48:39,670 --> 00:48:42,320 ولكن إذا كنت تبقي فقط السقوط بايت أسفل - أو حرف - انهم ذاهبون لإنهاء 968 00:48:42,320 --> 00:48:46,070 وصلت إلى المكان 0 على طول الطريق حتى إلى 11 لتصبح النتيجة 0 المفهرسة. 969 00:48:46,070 --> 00:48:49,170 >> ولكن أين هو الطابع 13TH الذهاب الى نهاية المطاف؟ 970 00:48:49,170 --> 00:48:50,310 حيث هو 14؟ 971 00:48:50,310 --> 00:48:52,430 أين الطابع 50 الذهاب الى نهاية المطاف؟ 972 00:48:52,430 --> 00:48:54,070 >> انها سوف تستمر إلى أسفل. 973 00:48:54,070 --> 00:48:57,350 لأنه حتى وإن كنا رسمها صورة مع مكدس يكبرون، و 974 00:48:57,350 --> 00:48:59,920 عناوين، اتضح، انتقل من عناوين صغيرة، صغيرة 975 00:48:59,920 --> 00:49:01,830 مؤشرات، إلى عناوين كبيرة. 976 00:49:01,830 --> 00:49:03,540 لذلك يبقى مجرد الذهاب أعلى وأعلى. 977 00:49:03,540 --> 00:49:05,660 >> لذلك إذا كانت أنواع المستخدم في مرحبا، هذا أمر عظيم. 978 00:49:05,660 --> 00:49:08,650 لا علة، لا توجد مشكلة، والجميع آمنة. 979 00:49:08,650 --> 00:49:11,940 ولكن إذا كان المستخدم في أنواع ما سنقوم استدعاء التعليمات البرمجية الخصومة، ممثلة 980 00:49:11,940 --> 00:49:16,040 بشكل عام باسم لذلك، هجوم، هجوم، هجوم، هجوم، ما يمكن أن يحدث؟ 981 00:49:16,040 --> 00:49:19,760 >> حسنا، إذا كان كل من المدخلات أن المستخدم كتبته في ليست مجرد بعض ودية 982 00:49:19,760 --> 00:49:21,540 أو سلسلة من الأحرف الهجوم. 983 00:49:21,540 --> 00:49:24,050 انها في الواقع سلسلة من الأحرف أنه إذا جمعت ذلك، 984 00:49:24,050 --> 00:49:26,050 هو رمز في الواقع. 985 00:49:26,050 --> 00:49:29,570 ربما انها رمز يقوم بحذف جميع الملفات الموجودة على القرص الصلب الخاص بك أو يرسل البريد المزعج 986 00:49:29,570 --> 00:49:30,810 أو شيء من هذا القبيل. 987 00:49:30,810 --> 00:49:35,110 لاحظ أن ما هو المفتاح هنا هو أن إذا حصلت على الرجل السيئ محظوظا بما فيه الكفاية ل 988 00:49:35,110 --> 00:49:37,830 الكتابة فوق قطعة حمراء من الذاكرة - 989 00:49:37,830 --> 00:49:41,080 التي لم أكن رسم على صورة بلدي ولكن هذه الصورة لديه ويكيبيديا هنا - 990 00:49:41,080 --> 00:49:42,890 ما يسمى عنوان عودتها. 991 00:49:42,890 --> 00:49:47,470 >> عندما يعود الغذاء، عندما يعود المبادلة، كيف تعرف الكمبيوتر للانتقال من 992 00:49:47,470 --> 00:49:49,790 هنا لهنا؟ 993 00:49:49,790 --> 00:49:52,920 أو في قطاع التكنولوجيا حتى أعلاه، وكيف أنها لا تعرف للذهاب من مبادلة 994 00:49:52,920 --> 00:49:54,870 كود - و0 و1 ل أن المبادلة الإنشاء - 995 00:49:54,870 --> 00:49:56,020 العودة الى الأصل؟ 996 00:49:56,020 --> 00:50:00,450 هناك ما يسمى عنوان المرسل المخزنة في هذا الإطار مكدس نفسه، على 997 00:50:00,450 --> 00:50:02,140 نفس الكافتيريا الدرج. 998 00:50:02,140 --> 00:50:06,080 >> لذلك إذا كان الرجل السيئ هو ذكي بما فيه الكفاية ل وضع شفرة الهجوم، شفرة الهجوم، والهجوم 999 00:50:06,080 --> 00:50:07,960 رمز، والحصول على محظوظا بما فيه الكفاية - 1000 00:50:07,960 --> 00:50:11,630 في كثير من الأحيان من خلال التجربة والخطأ - ل الكتابة أن عنوان المرسل الحمراء، 1001 00:50:11,630 --> 00:50:14,360 مع عنوان وإشعار أعلى جدا. 1002 00:50:14,360 --> 00:50:16,830 إشعار 0835C080. 1003 00:50:16,830 --> 00:50:20,650 الذي كتبت عليه الوراء حتى أعلى ل أسباب سنقوم ربما إعادة النظر. 1004 00:50:20,650 --> 00:50:22,050 هذا هو هذا العدد. 1005 00:50:22,050 --> 00:50:25,790 >> لذلك إذا كان الرجل السيئ يحصل محظوظا بما فيه الكفاية أو ذكي بما فيه الكفاية لكتابة فوق الحمراء 1006 00:50:25,790 --> 00:50:29,480 شريط من الذاكرة مع عنوان كود انه او انها لديها بطريقة ما 1007 00:50:29,480 --> 00:50:34,980 حقنها في جهاز الكمبيوتر الخاص بك، وتخمين الذي كود سوف تعاد إلى 1008 00:50:34,980 --> 00:50:38,260 حالما يتم تنفيذ فو؟ 1009 00:50:38,260 --> 00:50:39,440 >> رمز الرجل سيئة. 1010 00:50:39,440 --> 00:50:43,610 لذلك هذا شفرة الهجوم، AAA، ومرة ​​أخرى، قد إرسال البريد المزعج، قد حذف كافة الملفات 1011 00:50:43,610 --> 00:50:44,500 على القرص الصلب الخاص بك. 1012 00:50:44,500 --> 00:50:48,740 ولكن هذا هو ما حقا تجاوز سعة مكدس هو، أو تجاوز سعة المخزن المؤقت، أو 1013 00:50:48,740 --> 00:50:51,060 هجوم تجاوز سعة المخزن المؤقت. 1014 00:50:51,060 --> 00:50:54,400 >> وانها لا يصدق، لا يصدق المشتركة حتى يومنا هذا مع البرامج المكتوبة في 1015 00:50:54,400 --> 00:50:58,220 C، C + +، وحتى بعض اللغات الأخرى. 1016 00:50:58,220 --> 00:51:02,275 على تلك المذكرة مخيف، وسوف نقوم تنتهي مزحة. 1017 00:51:02,275 --> 00:51:03,230 >> [ضحك] 1018 00:51:03,230 --> 00:51:04,550 >> أراك يوم الاربعاء. 1019 00:51:04,550 --> 00:51:07,920 1020 00:51:07,920 --> 00:51:10,310 في CS50 المقبل - 1021 00:51:10,310 --> 00:51:15,920 لذلك أنا كل من المصابيح القرص ولكن اليوم الانتظار، والحليب الخالي من الدهون، ونصف الهاتف 1022 00:51:15,920 --> 00:51:17,850 الكتاب، وعصير البرتقال التي شربت اليوم. 1023 00:51:17,850 --> 00:51:20,370 1024 00:51:20,370 --> 00:51:22,780 كابل USB، وجع. 1025 00:51:22,780 --> 00:51:24,800 >> [عزف الموسيقى]