1 00:00:00,000 --> 00:00:06,180 2 00:00:06,180 --> 00:00:07,820 >> JASON هيرشهورن: مرحبا بكم لA5، الجميع. 3 00:00:07,820 --> 00:00:11,270 لدينا أسبوع مثيرة أمامنا، في الغالب لأن هناك الكثير من الجديد 4 00:00:11,270 --> 00:00:12,350 يواجه في هذه الغرفة. 5 00:00:12,350 --> 00:00:12,920 أنه لأمر رائع. 6 00:00:12,920 --> 00:00:15,740 وهناك الكثير من وجودك هنا عن طريق الصدفة، الذي هو أفضل. 7 00:00:15,740 --> 00:00:18,220 لذلك نأمل عليك أن تبقي الانضمام إلينا. 8 00:00:18,220 --> 00:00:20,220 >> هذا الاسبوع ونحن في طريقنا لقضاء الجزء الأكبر من القسم 9 00:00:20,220 --> 00:00:21,870 التحضير للمسابقة. 10 00:00:21,870 --> 00:00:26,580 لذلك في جدول أعمالنا، ونحن ذاهبون الى الحديث قليلا عن موارد للفئة، 11 00:00:26,580 --> 00:00:30,350 ولكن أيضا لهذه المسابقة، وبعد ذلك، مرة أخرى، تنفق الجزء الأكبر من الطبقة الكلام 12 00:00:30,350 --> 00:00:31,390 حول الأسئلة. 13 00:00:31,390 --> 00:00:33,900 مرة واحدة ننتهي الإجابة الخاصة بك أسئلة، أو إذا أسئلتك 14 00:00:33,900 --> 00:00:39,010 يقودنا بطبيعة الحال إلى بعض الترميز، وأنا لديك مشاكل عينة من انتخابات التجديد النصفي 15 00:00:39,010 --> 00:00:43,180 الماضي بأننا سوف رمز حي في القسم معا التي تجلب أيضا بعض الدول الاخرى 16 00:00:43,180 --> 00:00:45,420 مواضيع جيدة لتغطية. 17 00:00:45,420 --> 00:00:48,280 >> حتى الأولى، ونحن قد ذهبت من خلال ل الأسبوعين الماضيين أن أذكركم 18 00:00:48,280 --> 00:00:51,700 الرجال، وهناك من نصف طن من الموارد يتوفر لهذه الدورة. 19 00:00:51,700 --> 00:00:55,020 وكثير منهم تكون مفيدة بشكل لا يصدق لكم وأنتم تواصلون ل 20 00:00:55,020 --> 00:00:57,280 دراسة لمسابقة 0، لأن انها بعد ظهر اليوم الثلاثاء. 21 00:00:57,280 --> 00:00:59,630 لذلك كانت كل واحد منكم دراسة لبعض الشيء. 22 00:00:59,630 --> 00:01:02,640 >> هناك ملاحظات المحاضرات ومصدر التعليمات البرمجية التي يجب عليك 23 00:01:02,640 --> 00:01:04,050 بالتأكيد إنهاء إجراءات المغادرة. 24 00:01:04,050 --> 00:01:05,019 مشاهدة السراويل. 25 00:01:05,019 --> 00:01:07,470 تحقق من study.cs50.net. 26 00:01:07,470 --> 00:01:11,770 ومن ثم، المدرجة أدناه، عددا من الموارد الأخرى. 27 00:01:11,770 --> 00:01:14,020 >> مرة أخرى، مسابقة 0 غدا في 01:00. 28 00:01:14,020 --> 00:01:18,230 إذا لم تكن قد فعلت ذلك بالفعل، وتحقق خارج عن مسابقة 0 الوثيقة على 29 00:01:18,230 --> 00:01:21,370 الصفحة الرئيسية بالطبع لمعرفة حيث كنت تتناولين هذه المسابقة. 30 00:01:21,370 --> 00:01:25,770 يبدأ الاختبار الساعة 1:10 و ينتهي في وقت لاحق الدقيقة 70. 31 00:01:25,770 --> 00:01:29,610 حتى إذا كنت تظهر بعد 01:10، كنت ذاهب للحصول على أن العديد من أقل دقيقة 32 00:01:29,610 --> 00:01:30,940 من 70 إلى اتخاذ هذه المسابقة. 33 00:01:30,940 --> 00:01:33,570 لذلك تأكد من كنت هناك في الوقت المحدد. 34 00:01:33,570 --> 00:01:38,690 إذا كنت طالبا أو التمديد لها بعض الاعتبارات اختبار أخرى، 35 00:01:38,690 --> 00:01:40,400 قد لا يكون في 1:00 غدا. 36 00:01:40,400 --> 00:01:43,540 ولكن مرة أخرى، والتحقق من معلومات عن مسابقة 0 توثيق للتأكد من أنك تعرف متى 37 00:01:43,540 --> 00:01:44,760 كنت تتناولين هذه المسابقة. 38 00:01:44,760 --> 00:01:46,440 كتبت 75 دقيقة هنا. 39 00:01:46,440 --> 00:01:48,580 أعتقد أن هذا حق، وليس 70. 40 00:01:48,580 --> 00:01:53,420 >> وهو يغطي جميع المواد من أسبوع 0 لمحاضرة الاسبوع الماضي يوم الاربعاء. 41 00:01:53,420 --> 00:01:59,350 ومرة أخرى، لهذا الاختبار، في أن الوثيقة، يمكنك الحصول على واحدة ذات وجهين و 8 42 00:01:59,350 --> 00:02:03,770 1/2 بنسبة 11 ورقة من الورق التي تحصل لاستخدام الملاحظات خلال هذه المسابقة. 43 00:02:03,770 --> 00:02:08,570 كثير من الناس، إن لم يكن معظم الناس، لديها وجدت أن الطريقة الوحيدة الأكثر مفيدة 44 00:02:08,570 --> 00:02:11,970 لدراسة هذه المسابقة هو جعل ورقة الدراسة، و 45 00:02:11,970 --> 00:02:13,730 سدر واحد، خاصة بهم. 46 00:02:13,730 --> 00:02:17,710 حتى ننظر في تلك الماضي إذا كنت قد رأيت تلك الماضية. 47 00:02:17,710 --> 00:02:19,960 الوصول للأصدقاء لمعرفة ما انهم يضعون على رغبتهم. 48 00:02:19,960 --> 00:02:23,610 >> ولكن اليدين باستمرار، فإن أفضل طريقة يمكنك الدراسة هو أن يذهب من خلال كل شيء و 49 00:02:23,610 --> 00:02:26,530 برى عليه إلى ما ينبغي أو لا تنتمي على تلك الورقة من 50 00:02:26,530 --> 00:02:30,570 ورقة، لأن هذا هو مجرد حقا الطريقة مفيدة بالنسبة لك للتأكد من 51 00:02:30,570 --> 00:02:33,620 وأنت تسير من خلال كل شيء و لديك بعض الألفة معها. 52 00:02:33,620 --> 00:02:36,690 معظم الناس، نجد، على الرغم من أنها والورقة يجلس 53 00:02:36,690 --> 00:02:39,840 بجانبها على هذه المسابقة، لا تتحول لذلك، لأنه، مرة أخرى، أن جدا 54 00:02:39,840 --> 00:02:43,290 عملية الانتقال من خلال المعلومات وقد ساعد على تعلم ذلك. 55 00:02:43,290 --> 00:02:45,370 >> هل لدى أي شخص أي أسئلة حول مسابقة 0؟ 56 00:02:45,370 --> 00:02:50,120 57 00:02:50,120 --> 00:02:51,450 لديه الجميع - 58 00:02:51,450 --> 00:02:53,230 أنا لا أذهب للقيام برفع الأيدي. 59 00:02:53,230 --> 00:02:53,550 لا تهتم. 60 00:02:53,550 --> 00:02:54,790 كنت ذاهبا لنسأل الذين بدأت الدراسة. 61 00:02:54,790 --> 00:02:58,360 لكنني لا أريد أن تجعلك جميع لن ترفع يديك. 62 00:02:58,360 --> 00:03:01,290 لذلك كما قلت - نعم، آفي، والمضي قدما. 63 00:03:01,290 --> 00:03:04,205 >> AVI: ماذا سيكون أمرا مفيدا لوضعه على بيجر واحد؟ 64 00:03:04,205 --> 00:03:05,875 >> الطالب: هذا متروك لكم. 65 00:03:05,875 --> 00:03:08,210 >> JASON هيرشهورن: يمكنك الحصول على لاستخدام حكمك. 66 00:03:08,210 --> 00:03:13,220 أشياء مفيدة لوضعه على بيجر واحد، إذا كنت الخلط حول يا كبير 67 00:03:13,220 --> 00:03:17,510 وقت التشغيل من أنواع مختلفة من عمليات البحث والأنواع، التي وضعت على هناك في 68 00:03:17,510 --> 00:03:18,760 الرسم البياني مدهش في متناول يدي. 69 00:03:18,760 --> 00:03:22,250 بهذه الطريقة، إذا كنت طلبت أن على مسابقة، لا تحتاج لمحاولة والشكل 70 00:03:22,250 --> 00:03:23,560 بها أو سبب من خلال وقت التشغيل. 71 00:03:23,560 --> 00:03:24,730 يمكنك فقط نسخ عليه. 72 00:03:24,730 --> 00:03:28,320 إذا نظرتم المسابقات الماضية، والكثير من مرات، يركض هناك أسئلة الزمن. 73 00:03:28,320 --> 00:03:34,150 بحيث سيكون مثالا جيدا شيء وضعت على جهاز النداء الخاص بك واحدة. 74 00:03:34,150 --> 00:03:37,450 >> الأشياء الجيدة الأخرى لوضع جرا، وإذا كنت الخلط حول كيفية إعلان 75 00:03:37,450 --> 00:03:40,570 وظيفة أو ما أجزاء مختلفة من تعريف الدالة هي، والكتابة 76 00:03:40,570 --> 00:03:43,400 أن هناك، إصدار عام وربما بعد ذلك مثال على ذلك. 77 00:03:43,400 --> 00:03:47,290 إذا كنت في حيرة من المؤشرات، رسم تخطيطي لكيفية مؤشرات العمل 78 00:03:47,290 --> 00:03:48,660 ربما من المفيد حقا. 79 00:03:48,660 --> 00:03:52,440 إذا كنت في حيرة من أمري العودية، و عينة دالة العودية على وجود 80 00:03:52,440 --> 00:03:54,980 ويمكن أيضا أن يكون مفيدا حقا. 81 00:03:54,980 --> 00:03:57,290 لا أن أقدم لكم بعض الأفكار؟ 82 00:03:57,290 --> 00:04:01,820 >> AVI: أنت بحاجة إلى فهم عملية تجميع بأكملها، مثل 83 00:04:01,820 --> 00:04:03,220 كيف أن جميع الأعمال؟ 84 00:04:03,220 --> 00:04:06,620 >> JASON هيرشهورن: كل شيء التي تم تغطيتها يمكن 85 00:04:06,620 --> 00:04:08,060 تظهر على هذه المسابقة. 86 00:04:08,060 --> 00:04:08,930 الأسئلة - 87 00:04:08,930 --> 00:04:11,300 ولكن مرة أخرى، وبعض الأمور ستكون مرجح بشدة أكثر من غيرها. 88 00:04:11,300 --> 00:04:14,330 قد تأتي بعض الأمور مرة أخرى ومرة أخرى في الصف، في 89 00:04:14,330 --> 00:04:15,590 محاضرة، والباب. 90 00:04:15,590 --> 00:04:17,220 أشياء أخرى لم يأتي ذلك في كثير من الأحيان. 91 00:04:17,220 --> 00:04:22,900 >> لقد تحدثنا كثيرا عن # تشمل و -L شيء وما يعني في تلك 92 00:04:22,900 --> 00:04:24,390 عملية تجميع. 93 00:04:24,390 --> 00:04:29,120 لقد تحدثنا كثيرا عن GDB، التشبث، تلك الأعلام المختلفة التي نستخدمها عندما 94 00:04:29,120 --> 00:04:33,100 نحن تجميع شيء، وماذا make15، على سبيل المثال، حقا 95 00:04:33,100 --> 00:04:34,510 ويعني حقا. 96 00:04:34,510 --> 00:04:38,110 ونحن لن نتحدث الكثير عن كل خطوة واحدة في 97 00:04:38,110 --> 00:04:39,240 عملية تجميع. 98 00:04:39,240 --> 00:04:40,410 لقد زالت تحدث حول هذا الموضوع. 99 00:04:40,410 --> 00:04:42,550 لذلك ما زال ما كنت يجب أن تكون على دراية. 100 00:04:42,550 --> 00:04:44,610 ولكن مرة أخرى، ونحن لن يكون - 101 00:04:44,610 --> 00:04:49,140 الأشياء التي تأتي في كثير من الأحيان في الصف من المرجح أن يأتي مزيد من 102 00:04:49,140 --> 00:04:52,495 في كثير من الأحيان ويكون بشكل أكبر المرجحة في هذه المسابقة. 103 00:04:52,495 --> 00:04:53,280 >> بارد. 104 00:04:53,280 --> 00:04:54,580 أي أسئلة أخرى حول مسابقة 0؟ 105 00:04:54,580 --> 00:04:57,660 106 00:04:57,660 --> 00:05:00,050 >> موافق، لذلك أنا وضعت قائمة الموضوعات المدرجة على متنها. 107 00:05:00,050 --> 00:05:01,550 ذهبت من خلال المنهج. 108 00:05:01,550 --> 00:05:07,340 ذهبت من خلال استعراض القسم من الليلة الماضية وتلك الشرائح من أجل التوصل إلى 109 00:05:07,340 --> 00:05:13,710 مع قائمة غير حصرية من المواضيع أننا قد غطت حتى الآن في CS50 110 00:05:13,710 --> 00:05:16,800 والأشياء التي قد تظهر على هذه المسابقة. 111 00:05:16,800 --> 00:05:19,900 لذلك أنا لن تذهب من خلال كل واحد من هؤلاء. 112 00:05:19,900 --> 00:05:22,370 التي من شأنها أن تأخذ أكثر من ذلك بكثير الوقت من لدينا الآن. 113 00:05:22,370 --> 00:05:26,880 ولكن أنا وضعت هذا الأمر هنا على أمل هرول الذاكرة الخاصة بك لالأشياء التي قد 114 00:05:26,880 --> 00:05:28,420 أو قد لا تكون مألوفة كما هو الحال مع لكم. 115 00:05:28,420 --> 00:05:32,850 >> وأحب أن تنفق الجزء الأكبر من قسم الإجابة على أسئلتكم حول 116 00:05:32,850 --> 00:05:35,130 هذه المواضيع، والمواضيع التي لم تتم تغطيتها هنا. 117 00:05:35,130 --> 00:05:36,130 يمكننا إرسال رمز زائف. 118 00:05:36,130 --> 00:05:40,010 يمكننا كتابة التعليمات البرمجية الحقيقي للتأكد من أنك - 119 00:05:40,010 --> 00:05:44,280 أستطيع أن أجيب على سؤالك ومساعدة الجميع فهم في الأساس 120 00:05:44,280 --> 00:05:48,330 الكثير من هذه المواضيع لذلك عليك أن تشعر استعداد ومريحة الخوض 121 00:05:48,330 --> 00:05:50,150 مسابقة غدا. 122 00:05:50,150 --> 00:05:52,300 وقراءة ذلك على القائمة. 123 00:05:52,300 --> 00:05:54,780 نأمل كنت قد وصلنا إلى القسم مع بعض الأسئلة كذلك. 124 00:05:54,780 --> 00:05:58,480 عندما تكون مستعدا، ورفع يدك ونحن سوف تبدأ. 125 00:05:58,480 --> 00:06:01,590 126 00:06:01,590 --> 00:06:05,200 >> نضع في اعتبارنا، والأسئلة التي لديك، لم تكن هناك أسئلة غبية. 127 00:06:05,200 --> 00:06:06,250 سمعنا أن الكثير. 128 00:06:06,250 --> 00:06:09,490 والأسئلة التي لديك، وأنا على استعداد للمراهنة، العديد من الأشخاص الآخرين على حد سواء 129 00:06:09,490 --> 00:06:11,740 يجلس هنا ومشاهدة يكون كذلك عبر الإنترنت. 130 00:06:11,740 --> 00:06:13,770 حتى تتمكن من مساعدة الناس فقط عن طريق طرح الأسئلة. 131 00:06:13,770 --> 00:06:15,070 ماركوس. 132 00:06:15,070 --> 00:06:18,040 >> ماركوس: بين كومة و كومة، هناك ما قبل تخصيصها 133 00:06:18,040 --> 00:06:22,880 النسبة المئوية من الذاكرة وهذا ما يعرف بأنه وهذا هو مكدس أو الكومة؟ 134 00:06:22,880 --> 00:06:25,010 أو كيف يمكن أن تعمل بالضبط؟ 135 00:06:25,010 --> 00:06:26,230 >> JASON هيرشهورن: السؤال الكبير. 136 00:06:26,230 --> 00:06:28,640 أنا ذاهب إلى الوراء تتبع قليلا. 137 00:06:28,640 --> 00:06:30,910 لا الجميع - 138 00:06:30,910 --> 00:06:31,660 يرجى نكون صادقين هنا. 139 00:06:31,660 --> 00:06:34,130 أعرف أنني أطلب منك أن رفع الخاص اليد أمام زملائك. 140 00:06:34,130 --> 00:06:38,510 ولكن هناك الناس الذين يشعرون غير مريح مع مكدس كومة و 141 00:06:38,510 --> 00:06:42,980 وأود أن يذهب أكثر من ذلك وماذا يعني تلك؟ 142 00:06:42,980 --> 00:06:43,880 ارفع يدك إذا - 143 00:06:43,880 --> 00:06:44,420 موافق. 144 00:06:44,420 --> 00:06:45,120 شكرا لك. 145 00:06:45,120 --> 00:06:48,420 لذلك نحن في طريقنا للذهاب أكثر من المكدس و كومة حقا بسرعة ثم 146 00:06:48,420 --> 00:06:50,370 الانتقال إلى الإجابة على سؤالك. 147 00:06:50,370 --> 00:06:58,250 >> لذلك إذا وضعنا خارج مربع لتمثيل الذاكرة على جهاز الكمبيوتر الخاص بك، ما هي بعض 148 00:06:58,250 --> 00:07:02,160 الأشياء التي تذهب في هذا المربع؟ 149 00:07:02,160 --> 00:07:03,630 الرئيسية. 150 00:07:03,630 --> 00:07:04,020 وتتمثل المهمة الرئيسية. 151 00:07:04,020 --> 00:07:05,890 أين تذهب الرئيسي؟ 152 00:07:05,890 --> 00:07:08,090 >> الطالب: [غير مسموع]. 153 00:07:08,090 --> 00:07:09,390 >> JASON هيرشهورن: لذا سنقوم وضعت الرئيسي هنا. 154 00:07:09,390 --> 00:07:12,180 155 00:07:12,180 --> 00:07:13,430 ماذا يذهب في هذا المربع؟ 156 00:07:13,430 --> 00:07:16,000 157 00:07:16,000 --> 00:07:18,140 >> الطالب: إن الوظائف التي تقوم بالاتصال. 158 00:07:18,140 --> 00:07:19,020 >> JASON هيرشهورن: وظائف التي نسميها. 159 00:07:19,020 --> 00:07:20,440 وأين يذهبون؟ 160 00:07:20,440 --> 00:07:21,300 >> الطالب: في المكدس. 161 00:07:21,300 --> 00:07:22,380 >> JASON هيرشهورن: إنهم تذهب في المكدس. 162 00:07:22,380 --> 00:07:27,350 لذلك نحن ذاهبون لهذه الكلمة الشيء إلى هنا المكدس. 163 00:07:27,350 --> 00:07:31,880 ويصل أعلى، لدينا الكومة. 164 00:07:31,880 --> 00:07:35,450 حتى الذاكرة ليست مجرد صندوق من هذا القبيل. 165 00:07:35,450 --> 00:07:37,330 ولكنه في الواقع مشابهة جدا. 166 00:07:37,330 --> 00:07:40,840 انها سوف يكون هناك الكثير من صناديق على وأكثر، اعتمادا على كيفية كبيرة الخاص 167 00:07:40,840 --> 00:07:43,730 الكمبيوتر هو أو كيف كبيرة الذاكرة الخاصة بك. 168 00:07:43,730 --> 00:07:46,950 >> في الاقتباس، نهاية الاقتباس "القاع" هو المكدس. 169 00:07:46,950 --> 00:07:50,880 وهناك أشياء متعددة التي تذهب على المكدس. 170 00:07:50,880 --> 00:07:53,840 وهذه تعتمد على وظائف لديك في التعليمات البرمجية. 171 00:07:53,840 --> 00:07:57,780 لديك دائما وظيفة واحدة في حياتك كود يسمى الرئيسي، لذلك هناك دائما 172 00:07:57,780 --> 00:08:00,480 القسم أسفل هنا في كومة المكرسة لالرئيسي. 173 00:08:00,480 --> 00:08:03,980 >> هذه الأقسام في المكدس وتسمى إطارات المكدس. 174 00:08:03,980 --> 00:08:09,580 عند استدعاء وظيفة أخرى، ويقول الرئيسية يستدعي دالة البحث الثنائي، 175 00:08:09,580 --> 00:08:11,075 نضع إطار آخر على المكدس. 176 00:08:11,075 --> 00:08:13,830 177 00:08:13,830 --> 00:08:17,320 وبشكل أكثر تحديدا، ونحن نذهب ل التبرع جزءا من الذاكرة على لدينا 178 00:08:17,320 --> 00:08:22,960 الكمبيوتر لتخزين ثنائي البحث في المحلية المتغيرات وتشغيل ثنائي 179 00:08:22,960 --> 00:08:24,150 رمز البحث. 180 00:08:24,150 --> 00:08:26,810 >> لذلك نحن ندعو البحث الثنائي. 181 00:08:26,810 --> 00:08:30,440 182 00:08:30,440 --> 00:08:33,340 في هذا جزء من الذاكرة، ونحن في طريقنا لتخزين المتغيرات المحلية. 183 00:08:33,340 --> 00:08:35,270 ونحن في طريقنا لتخزين دعواتها printf. 184 00:08:35,270 --> 00:08:38,159 أيا كان ما سيحدث، وهذا هو وظيفة الذهاب ليتم تخزينها هناك. 185 00:08:38,159 --> 00:08:40,350 البحث الثنائي هو الذهاب الى تنفيذ. 186 00:08:40,350 --> 00:08:42,210 هو ذاهب لاستكمال التنفيذ. 187 00:08:42,210 --> 00:08:47,450 ما هي الكلمة التي تعني في C التي ينبغي وظيفة 188 00:08:47,450 --> 00:08:49,306 استكمال تنفيذه؟ 189 00:08:49,306 --> 00:08:50,040 >> الطالب: العودة. 190 00:08:50,040 --> 00:08:50,870 >> JASON هيرشهورن: الرجوع. 191 00:08:50,870 --> 00:08:53,230 لذلك كلما رأيت بيان المقابل، نهايات ظيفة 192 00:08:53,230 --> 00:08:54,350 عندما يضرب ذلك. 193 00:08:54,350 --> 00:08:56,740 والبحث الثنائي حتى ضرب عودتها. 194 00:08:56,740 --> 00:09:01,360 هذا الجزء من الذاكرة سوف أساسا تقرر الافراج عنه. 195 00:09:01,360 --> 00:09:03,510 والرئيسي يعود الى التنفيذ. 196 00:09:03,510 --> 00:09:07,240 لذلك سوف الرئيسي قفة أينما كان، والدعوة البحث الثنائي، والحصول على بعض قيمة الإرجاع، 197 00:09:07,240 --> 00:09:08,700 ومتابعة التنفيذ. 198 00:09:08,700 --> 00:09:10,840 وهذا الإطار مكدس يذهب بعيدا. 199 00:09:10,840 --> 00:09:14,810 >> إذا كنا استدعاء دالة العودية التي هي وظيفة تطلق على نفسها أكثر 200 00:09:14,810 --> 00:09:18,480 وأكثر، ونحن قد تحصل - يقول نحن فعلت البحث الثنائية بشكل متكرر. 201 00:09:18,480 --> 00:09:21,520 ونحن قد تحصل ثنائي البحث إصدار واحد، البحث الثنائي اثنين، البحث الثنائي 202 00:09:21,520 --> 00:09:24,090 ثلاثة، أربعة البحث الثنائي، البحث الثنائي الخمسة. 203 00:09:24,090 --> 00:09:27,950 ثم هذا البحث ثنائي الخمس الاخيرة سوف تصل الى حالة قاعدة، والمكدس 204 00:09:27,950 --> 00:09:31,010 سوف نعود إطارات والحفاظ إغلاق حتى نعود إلى الرئيسية. 205 00:09:31,010 --> 00:09:32,530 يمكننا أن نذهب أكثر في العودية قليلا. 206 00:09:32,530 --> 00:09:35,530 ولكن كل هذا هو أن أقول، إذا كنت استدعاء وظائف متعددة في وقت واحد، 207 00:09:35,530 --> 00:09:39,250 سوف يكون هناك كومة متعددة الإطارات على المكدس. 208 00:09:39,250 --> 00:09:42,900 >> كومة، من ناحية أخرى، يصل هنا، ليس عن وظائف، 209 00:09:42,900 --> 00:09:44,380 ليس للمتغيرات المحلية. 210 00:09:44,380 --> 00:09:48,920 انها لالمخصصة بشكل حيوي المتغيرات. 211 00:09:48,920 --> 00:09:57,210 لذلك فان هذه هي المتغيرات التي يمكن أن تكون تهيئة إما الرئيسي أو 212 00:09:57,210 --> 00:09:58,640 تعمل تلك المكالمات الرئيسي. 213 00:09:58,640 --> 00:10:00,790 في أي مكان في التعليمات البرمجية الخاصة بك، فإنها يمكن تهيئة. 214 00:10:00,790 --> 00:10:04,360 وتهيئة حيوي متغير المخصصة. 215 00:10:04,360 --> 00:10:06,970 ما وظيفة في C لا نستخدمها؟ 216 00:10:06,970 --> 00:10:07,600 >> الطالب: Malloc. 217 00:10:07,600 --> 00:10:09,240 >> JASON هيرشهورن: Malloc. 218 00:10:09,240 --> 00:10:10,800 استدعاء malloc. 219 00:10:10,800 --> 00:10:12,260 تحصل على مساحة من الذاكرة. 220 00:10:12,260 --> 00:10:15,020 وهذه المساحة من الذاكرة هو على كومة. 221 00:10:15,020 --> 00:10:18,840 وهذه المساحة من الذاكرة يبقى هناك حتى الكلمة الحرة. 222 00:10:18,840 --> 00:10:22,670 >> المتغيرات المخصصة بشكل حيوي في ذلك سوف كومة موجودة لطالما كنت 223 00:10:22,670 --> 00:10:25,250 نريدهم في الوجود، وأنها لن يذهب بعيدا حتى تقوم صراحة 224 00:10:25,250 --> 00:10:26,760 نقول لهم للذهاب بعيدا. 225 00:10:26,760 --> 00:10:29,670 يمكنك إنشاء لهم في وظيفة واحدة. 226 00:10:29,670 --> 00:10:31,930 مكدس الدالة سوف الإطار يذهب بعيدا. 227 00:10:31,930 --> 00:10:35,490 ولكن هذا المتغير سوف لا تزال موجودة في كومة حتى يتم تحريرها، 228 00:10:35,490 --> 00:10:39,650 يحتمل بواسطة الدالة التي تسمى البحث الثنائي أو أيا كان. 229 00:10:39,650 --> 00:10:42,580 >> حتى تلك المتغيرات كومة البقاء هناك لطالما كنت تريد 230 00:10:42,580 --> 00:10:43,490 لهم بالبقاء هناك. 231 00:10:43,490 --> 00:10:46,090 ويحصلون على وضع هنا. 232 00:10:46,090 --> 00:10:47,450 ثم المرحلة التالية يحصل على وضع هناك. 233 00:10:47,450 --> 00:10:50,210 أنها تبقي الحصول على شغل في، وأنها البقاء هناك حتى الكلمة الحرة. 234 00:10:50,210 --> 00:10:52,870 >> وأساسا، وكومة كومة، الحصول على سؤال ماركوس، و 235 00:10:52,870 --> 00:10:54,500 تنمو تجاه بعضهم البعض. 236 00:10:54,500 --> 00:10:57,730 وإذا ما واجهت بعضها البعض، وكنت قد استخدام ما يصل كل الذاكرة في جهازك 237 00:10:57,730 --> 00:11:01,330 وجهاز الكمبيوتر، والبرنامج إنهاء لأنك لا تملك أي ذاكرة أكثر 238 00:11:01,330 --> 00:11:02,420 من اليسار إلى استخدامها. 239 00:11:02,420 --> 00:11:07,290 بينهما، وهناك أشياء أخرى محتملة. 240 00:11:07,290 --> 00:11:10,980 ولكن بالنسبة للنطاق هذا بالطبع، كنت لا داعي للقلق بشأن ذلك. 241 00:11:10,980 --> 00:11:12,020 >> بحيث كان الجواب على سؤالك. 242 00:11:12,020 --> 00:11:13,520 لا تقلق. 243 00:11:13,520 --> 00:11:15,550 لكن ذلك كان الجواب طويل. 244 00:11:15,550 --> 00:11:17,800 كل ما تحتاج إلى معرفته هو سوف كومة كومة و- 245 00:11:17,800 --> 00:11:18,900 واحد يبدأ في الجزء السفلي. 246 00:11:18,900 --> 00:11:19,570 كومة لا. 247 00:11:19,570 --> 00:11:20,790 كومة من هناك. 248 00:11:20,790 --> 00:11:21,990 وسوف تنمو أقرب إلى بعضها البعض. 249 00:11:21,990 --> 00:11:23,110 >> وإذا ما تلمس، وهذا هو المشكلة. 250 00:11:23,110 --> 00:11:24,500 كنت نفدت الذاكرة. 251 00:11:24,500 --> 00:11:28,760 ولكن أيضا، بالإضافة إلى معرفة مكان و، ما تخزينها في كل من 252 00:11:28,760 --> 00:11:30,512 كومة كومة و. 253 00:11:30,512 --> 00:11:31,410 كورتيس. 254 00:11:31,410 --> 00:11:33,570 >> CURTIS: عندما تتصادم، غير أن تجاوز سعة مكدس؟ 255 00:11:33,570 --> 00:11:35,670 >> JASON هيرشهورن: عندما تتصادم، هذا ليس تجاوز سعة مكدس. 256 00:11:35,670 --> 00:11:38,340 تجاوز سعة المكدس هو منطقة مختلفة يمكننا أن نذهب أكثر إذا كنت ترغب في ذلك. 257 00:11:38,340 --> 00:11:40,020 حسنا، سوف نعود إلى ذلك في بعض الشيء. 258 00:11:40,020 --> 00:11:42,730 >> الطالب: ما هي كلمة دعا عندما ضرب بعضهم البعض، و 259 00:11:42,730 --> 00:11:44,450 كومة كومة و؟ 260 00:11:44,450 --> 00:11:46,640 >> JASON هيرشهورن: الآن، لا تقلق. 261 00:11:46,640 --> 00:11:47,750 أعرف فقط - 262 00:11:47,750 --> 00:11:50,530 سأجيب على هذا السؤال بعد انتهاء اليوم الدراسي. 263 00:11:50,530 --> 00:11:52,680 إذا ما واجهت بعضها البعض، كنت نفد من الذاكرة، لأنه ليس هناك المزيد 264 00:11:52,680 --> 00:11:53,330 الفضاء هناك. 265 00:11:53,330 --> 00:11:55,450 >> الطالب: عفوا، ما هو خطأ ثوانى؟ 266 00:11:55,450 --> 00:11:58,710 >> JASON هيرشهورن: إن القطاع يمكن أن يسمى خطأ ل- 267 00:11:58,710 --> 00:12:02,240 ذلك يعتمد ماذا يسمى خطأ في ثوانى. 268 00:12:02,240 --> 00:12:06,260 في بعض الأحيان، تجاوز الكدسة، وأنها سوف ويقول خطأ ثوانى كما الخطأ. 269 00:12:06,260 --> 00:12:08,180 >> الطالب: وماذا عن يعتبر إلغاء مرجعية متغير فارغة؟ 270 00:12:08,180 --> 00:12:10,040 غير أن خطأ ثوانى؟ 271 00:12:10,040 --> 00:12:11,480 >> JASON هيرشهورن: يعتبر إلغاء مرجعية مؤشر فارغة - 272 00:12:11,480 --> 00:12:17,850 حسنا، إذا كان لديك مؤشر بأنك تعيين يساوي فارغة، المؤشرات، الاستدعاء، 273 00:12:17,850 --> 00:12:20,270 عناوين الذاكرة مخزن كما قيمهم. 274 00:12:20,270 --> 00:12:23,660 ومؤشر فارغة هي في جوهرها تخزين 0، 0 عشر 275 00:12:23,660 --> 00:12:26,670 معالجة في هذا المتغير. 276 00:12:26,670 --> 00:12:30,010 حتى 0X، 0، 0، 0، 0، وهلم جرا. 277 00:12:30,010 --> 00:12:35,030 هذا العنوان 0 عشر في الذاكرة التي ليست في الصورة لدينا، وهذا حتى هناك 278 00:12:35,030 --> 00:12:38,800 في مكان ما، وهذا محفوظة للكمبيوتر. 279 00:12:38,800 --> 00:12:40,130 نحن لا يسمح لمسها. 280 00:12:40,130 --> 00:12:44,680 >> حتى عندما يكون تنفيذ البرنامج الخاص بك، إذا شيء يحاول أن يذهب إلى الذاكرة 281 00:12:44,680 --> 00:12:48,990 عنوان 0، فهو يعرف أن وهذا هو قيمة فارغة. 282 00:12:48,990 --> 00:12:50,820 فهو يعرف أن لا شيء هناك. 283 00:12:50,820 --> 00:12:53,420 حتى إذا حاولت استخدام شيء وهناك وشيء من هذا القبيل هناك علاج أو 284 00:12:53,420 --> 00:12:58,355 يحاول أن يذهب إلى هذا الموقع، وكنت سوف تحصل على خطأ ثوانى أو خطأ. 285 00:12:58,355 --> 00:13:00,520 لا أن أجيب على سؤالك؟ 286 00:13:00,520 --> 00:13:03,170 >> والآن سنذهب إلى الوراء لكومة تجاوز. 287 00:13:03,170 --> 00:13:09,560 الأشياء في المكدس، ويا ​​رفاق لديهم تشاهد من قبل، في - دعونا رسم قريبة 288 00:13:09,560 --> 00:13:11,966 تتكون من إطار المكدس. 289 00:13:11,966 --> 00:13:15,050 يمكن أن نرى أن الجميع؟ 290 00:13:15,050 --> 00:13:16,650 لذلك لدينا إطار المكدس لدينا. 291 00:13:16,650 --> 00:13:23,260 نحن توفير مجموعة واسعة باعتباره المحلية في المتغير في هذه الوظيفة. 292 00:13:23,260 --> 00:13:29,510 لذلك نقول لدينا مجموعة من خمسة البقع. 293 00:13:29,510 --> 00:13:33,230 سيتم تخزين كل خمسة من هؤلاء في هذا الإطار المكدس. 294 00:13:33,230 --> 00:13:37,540 >> إذا بدأنا الكتابة خارج حدود هذه المجموعة - 295 00:13:37,540 --> 00:13:43,990 لذلك إذا بدأنا في كتابة، دعنا نقول هذا هو 0. 296 00:13:43,990 --> 00:13:46,800 تلك هي مؤشرات خمسة من مجموعة لدينا. 297 00:13:46,800 --> 00:13:50,980 إذا بدأنا الكتابة في مؤشر 5، والتي ليس لدينا عندما يكون لدينا 298 00:13:50,980 --> 00:13:55,900 مجموعة من حجم 5، نبدأ الكتابة في المؤشر 6، 7، 8، 9، يمكن أن نحصل على المكدس 299 00:13:55,900 --> 00:13:57,960 خطأ تجاوز. 300 00:13:57,960 --> 00:14:00,510 >> عموما انها ليست - 301 00:14:00,510 --> 00:14:04,910 ربما كنت سوف ندخل في ورطة إذا ذهبت أكثر من جانب واحد. 302 00:14:04,910 --> 00:14:08,640 ولكن عموما، وسوف تحصل في معظم المتاعب إذا تذهب أكثر من قبل الكثير 303 00:14:08,640 --> 00:14:12,770 وتذهب حتى الآن أكثر من أن تكتب أكثر من عنوان المرسل من أن 304 00:14:12,770 --> 00:14:16,080 وظيفة، والذي يقع في الجزء السفلي من الإطار المكدس. 305 00:14:16,080 --> 00:14:16,520 >> لأنه، أليس كذلك؟ 306 00:14:16,520 --> 00:14:17,670 كنت - في - آسف. 307 00:14:17,670 --> 00:14:18,550 لا "لأن الحق." 308 00:14:18,550 --> 00:14:20,470 >> في إطار المكدس، لديك المتغيرات المحلية الخاصة بك. 309 00:14:20,470 --> 00:14:27,090 في الجزء السفلي جدا من المكدس الإطار هو عنوان المرسل. 310 00:14:27,090 --> 00:14:28,790 حيث ان وظيفة يذهب عندما انتهى. 311 00:14:28,790 --> 00:14:33,750 وإذا قمت بالكتابة فوق تلك العودة العنوان، ثم عندما يكون هذا الإطار المكدس، 312 00:14:33,750 --> 00:14:36,680 عندما كنت تمر مكدس تأطير وتنفيذ كل سطر، وكنت 313 00:14:36,680 --> 00:14:40,350 سوف تذهب إلى عنوانك عودة جديدة أن الذي كتبت هناك بدلا من 314 00:14:40,350 --> 00:14:40,910 واحد الفعلية. 315 00:14:40,910 --> 00:14:45,050 وهذه هي الطريقة التي شهدناها بعض الخروقات الأمنية 316 00:14:45,050 --> 00:14:46,780 يمكن أن يحدث مع أجهزة الكمبيوتر. 317 00:14:46,780 --> 00:14:52,760 >> تجاوز سعة مكدس ذلك، باختصار، هو عندما قمت بالكتابة فوق جزء في المكدس 318 00:14:52,760 --> 00:14:55,440 كنت من المفترض أن تستخدم والمحلية متغير كنت من المفترض أن تستخدم، و 319 00:14:55,440 --> 00:14:58,070 ولا سيما عند بدء الكتابة الأمور الهامة مثل 320 00:14:58,070 --> 00:14:59,100 العودة عنوان. 321 00:14:59,100 --> 00:15:00,090 وهذا هو المكان الذي سوف تحصل على خطأ. 322 00:15:00,090 --> 00:15:03,980 أو ربما حتى يمكن أن تبدأ حتى الكتابة في - 323 00:15:03,980 --> 00:15:05,370 يقول كان البحث الثنائي الحق فوق الرئيسي. 324 00:15:05,370 --> 00:15:07,790 إذا كنت بالكتابة فوق الكثير، كنت يمكن أن يكتب في الرئيسية. 325 00:15:07,790 --> 00:15:10,230 ولكن عموما، وتحصل على خطأ قبل ثم، وذلك لأن الكمبيوتر يعرف 326 00:15:10,230 --> 00:15:12,270 كنت تفعل شيئا كنت لا ينبغي أن تفعل. 327 00:15:12,270 --> 00:15:12,560 نعم. 328 00:15:12,560 --> 00:15:13,910 >> الطالب: ما الفرق بين تجاوز سعة مكدس 329 00:15:13,910 --> 00:15:16,940 وتجاوز سعة المخزن المؤقت؟ 330 00:15:16,940 --> 00:15:19,420 >> JASON هيرشهورن: تجاوز سعة المخزن المؤقت هو نوع أكثر عمومية من 331 00:15:19,420 --> 00:15:20,395 ما كنت وصفتها للتو. 332 00:15:20,395 --> 00:15:22,610 >> الطالب: إذن تجاوز سعة مكدس هو مثال على تجاوز سعة المخزن المؤقت. 333 00:15:22,610 --> 00:15:23,420 >> JASON هيرشهورن: بالضبط. 334 00:15:23,420 --> 00:15:28,700 هذا هو صفيف يمكن أن نفكر فيه باعتباره العازلة، مساحة للأشياء للذهاب. 335 00:15:28,700 --> 00:15:30,600 هذا هو كومة تجاوز سعة المخزن المؤقت. 336 00:15:30,600 --> 00:15:33,210 أننا يمكن أن يكون تجاوز سعة المخزن المؤقت الكومة. 337 00:15:33,210 --> 00:15:36,870 إذا كان هناك منطقة عازلة، والتي غالبا ما تكون هناك هو مجموعة الكومة، ونحن 338 00:15:36,870 --> 00:15:40,600 بالكتابة فوق تلك الحدود، ثم فإننا لديك كومة تجاوز سعة المخزن المؤقت. 339 00:15:40,600 --> 00:15:44,870 >> وخارج نطاق هذه الدورة، انهم الكشف بطريقة مختلفة قليلا. 340 00:15:44,870 --> 00:15:48,040 المترجم له خاصة طرق الكشف عن كل منها. 341 00:15:48,040 --> 00:15:50,660 ولكن تجاوز سعة المخزن المؤقت هو أكثر عمومية نوع ما وصفت، 342 00:15:50,660 --> 00:15:54,090 الذي كان كومة تجاوز سعة المخزن المؤقت. 343 00:15:54,090 --> 00:15:56,240 لم أن أجيب على سؤالك؟ 344 00:15:56,240 --> 00:15:57,910 الحلو. 345 00:15:57,910 --> 00:16:01,850 >> كان هناك أي أسئلة أخرى ذات صلة إلى المكدس أو كومة؟ 346 00:16:01,850 --> 00:16:04,920 347 00:16:04,920 --> 00:16:05,510 نعم. 348 00:16:05,510 --> 00:16:08,220 >> الطالب: أنا أعلم أنك يجب أن سلاسل الحرة لأنهم في كومة 349 00:16:08,220 --> 00:16:09,305 وكنت لا تريد أن تسرب الذاكرة. 350 00:16:09,305 --> 00:16:12,240 لكن هل لديك لتحرير المتغيرات العالمية وأشياء من هذا القبيل؟ 351 00:16:12,240 --> 00:16:14,335 أم أنها تحررت تلقائيا؟ 352 00:16:14,335 --> 00:16:15,700 >> JASON هيرشهورن: سؤال جيد. 353 00:16:15,700 --> 00:16:22,340 حتى في CS50.H، ونحن خلق هذا الشيء بالنسبة لك ودعا سلسلة. 354 00:16:22,340 --> 00:16:23,800 سلسلة هو حقا ما؟ 355 00:16:23,800 --> 00:16:24,810 >> الطالب: شار نجوم. 356 00:16:24,810 --> 00:16:29,180 >> JASON هيرشهورن: نجم شار، وهو مؤشر إلى حرف، مؤشر إلى 357 00:16:29,180 --> 00:16:30,650 مجموعة من الأحرف. 358 00:16:30,650 --> 00:16:32,210 هذا ما هو السلسلة. 359 00:16:32,210 --> 00:16:36,050 لذلك نحن بحاجة لتحريره، لأن getstring، والتي استخدمنا الكثير - 360 00:16:36,050 --> 00:16:38,370 اسم السلسلة يساوي getstring - 361 00:16:38,370 --> 00:16:43,560 أن mallocs لنا بعض الذاكرة على كومة ومن ثم إرجاع المؤشر إلى 362 00:16:43,560 --> 00:16:47,230 الحرف الأول من ذلك سلسلة، نجم شار. 363 00:16:47,230 --> 00:16:52,760 >> لذلك ظاهريا، إذا لم تكن الكتابة الحرة على أي من سلاسل الخاص بك 364 00:16:52,760 --> 00:16:55,600 بعد أن كنت قد يسمى حتى الآن، لديك تم تسريب بعض الذاكرة. 365 00:16:55,600 --> 00:16:57,430 بالطبع نحن لم نتحدث عن عليه، حتى انها حصلت على أحد في 366 00:16:57,430 --> 00:16:58,520 مشكلة لفعل ذلك. 367 00:16:58,520 --> 00:16:59,980 ولكن للمضي قدما، نعم. 368 00:16:59,980 --> 00:17:03,990 عند استدعاء getstring، وكنت mallocing بعض المساحة على الكومة. 369 00:17:03,990 --> 00:17:07,640 وإذا لم يكن الكلمة الحرة في وقت لاحق على أن سلسلة، لديك تسرب الذاكرة. 370 00:17:07,640 --> 00:17:09,440 أن الإجابة على سؤالك؟ 371 00:17:09,440 --> 00:17:10,606 >> نعم 372 00:17:10,606 --> 00:17:15,020 >> الطالب: إذن للقيام بذلك، لا نستخدم الحق حرة قبل العودة؟ 373 00:17:15,020 --> 00:17:18,510 مثل، ضمن نطاق، وأنا أعتقد إذا نقول، مثل، الباحث الرئيسي، ضمن 374 00:17:18,510 --> 00:17:24,410 نطاق رمز هذا داخل تلك الأقواس المتعرجة، والحق قبل - 375 00:17:24,410 --> 00:17:26,140 كنت أعرف أين كنت عادة ما تضع العودة. 376 00:17:26,140 --> 00:17:27,950 هل وضعت حرة قبل ذلك؟ 377 00:17:27,950 --> 00:17:31,000 >> JASON هيرشهورن: وهكذا يمكنك وضع الحرة أينما كنت تريد أن تضع مجانية. 378 00:17:31,000 --> 00:17:33,810 لأن هذه يتم تخصيص حيوي متغيرات، لأن ما في وسعهم 379 00:17:33,810 --> 00:17:39,170 يعيش خارج نطاق معين وظيفة، إذا كنت استدعاء malloc في 380 00:17:39,170 --> 00:17:44,140 وظيفة منفصلة، ​​على سبيل المثال، getstring، يمكنك الكلمة الحرة في الرئيسية. 381 00:17:44,140 --> 00:17:46,050 لا تحتاج أن نسميها في وظيفة محددة 382 00:17:46,050 --> 00:17:47,570 حيث يتم استدعاء malloc. 383 00:17:47,570 --> 00:17:50,340 ولكنك تحتاج أن نسميها قبل أن تعود الرئيسي. 384 00:17:50,340 --> 00:17:51,120 >> وذلك يعتمد حقا. 385 00:17:51,120 --> 00:17:54,960 ذلك يعتمد على ماذا كنت malloced أن الفضاء في المقام الأول. 386 00:17:54,960 --> 00:17:57,320 بعض الناس سوف ندعو تحرير بسرعة كبيرة. 387 00:17:57,320 --> 00:17:59,220 بعض الناس لن الكلمة الحرة حتى نهاية برنامجهم. 388 00:17:59,220 --> 00:18:00,660 وأنها سوف تذهب من خلال وكل شيء مجاني. 389 00:18:00,660 --> 00:18:03,597 ذلك يعتمد على السبب الذي دعا malloc. 390 00:18:03,597 --> 00:18:11,270 >> الطالب: وماذا ستقول إذا كنت قد قمت بالإتصال استخدام getstring؟ 391 00:18:11,270 --> 00:18:13,320 وكنت أقول مجانية ماذا؟ 392 00:18:13,320 --> 00:18:20,040 >> JASON هيرشهورن: إذن بناء الجملة مجانا هو ببساطة الحرة، PAREN مفتوحة، على مقربة 393 00:18:20,040 --> 00:18:22,130 PAREN، واسم المؤشر. 394 00:18:22,130 --> 00:18:26,410 لذلك إذا كنت أكتب سلسلة متساوين اسم getstring، كنت وضعت اسم هنا. 395 00:18:26,410 --> 00:18:27,760 هذا هو اسم المؤشر. 396 00:18:27,760 --> 00:18:30,570 وكان يعرف لتحرير تلك الذاكرة. 397 00:18:30,570 --> 00:18:33,920 >> الطالب: لذلك عندما يحرر تلك الذاكرة، المؤشر لا يزال يشير إلى ذلك المكان 398 00:18:33,920 --> 00:18:34,970 في الذاكرة؟ 399 00:18:34,970 --> 00:18:39,020 أو هو مؤشر أفرغت أيضا العنوان الذي يشير إلى. 400 00:18:39,020 --> 00:18:40,290 >> JASON هيرشهورن: نحن يجب أن تحاول ذلك. 401 00:18:40,290 --> 00:18:41,430 يجب علينا أن رمز. 402 00:18:41,430 --> 00:18:43,880 دعونا نعود عندما نصل إلى الترميز، ودعونا رمز ذلك. 403 00:18:43,880 --> 00:18:46,000 وإذا كنت ترغب في معرفة الجواب إلى ذلك، يمكنك أيضا التعليمات البرمجية التي 404 00:18:46,000 --> 00:18:46,690 في هذه الأثناء. 405 00:18:46,690 --> 00:18:49,100 ولكن هذا سؤال كبير. 406 00:18:49,100 --> 00:18:53,480 >> الطالب: هل من الممكن ل شيء مجانا قريبا جدا؟ 407 00:18:53,480 --> 00:18:58,530 لذلك كنت لا تزال في حاجة إليها لبرنامجك، وكنت حررت أن مساحة الذاكرة؟ 408 00:18:58,530 --> 00:18:59,200 >> JASON هيرشهورن: نعم. 409 00:18:59,200 --> 00:19:03,020 فمن الممكن، إذا كنت شيء مجانا ومن ثم يمكنك استخدامه مرة أخرى، وسوف 410 00:19:03,020 --> 00:19:06,890 واجهت خطأ. 411 00:19:06,890 --> 00:19:10,810 ولكن هذا عليك، لأنك حررت شيء ثم يطلق عليه في وقت لاحق. 412 00:19:10,810 --> 00:19:13,940 بحيث كان خطأ من مبرمج. 413 00:19:13,940 --> 00:19:14,780 ولكن نعم. 414 00:19:14,780 --> 00:19:17,760 هل يمكن أن يكتب ذلك. 415 00:19:17,760 --> 00:19:19,240 >> أي أسئلة أخرى حول - 416 00:19:19,240 --> 00:19:19,760 نعم. 417 00:19:19,760 --> 00:19:22,820 >> الطالب: حتى إذا كان من المفترض أن كنت للتو تحريرها في العام قبل 418 00:19:22,820 --> 00:19:25,490 ينتهي البرنامج، فهل هذا يعني إذا كان البرنامج ينتهي وأنت لا تحريرها، 419 00:19:25,490 --> 00:19:27,580 لا يزال تخصيص الذاكرة؟ 420 00:19:27,580 --> 00:19:31,330 >> JASON هيرشهورن: إذا ينتهي البرنامج وكنت قد نسيت لتحرير شيء، ثم 421 00:19:31,330 --> 00:19:34,390 تم تخصيص تلك الذاكرة طوال عمر البرنامج. 422 00:19:34,390 --> 00:19:37,670 عندما يغلق البرنامج تماما، أن الذاكرة لن 423 00:19:37,670 --> 00:19:39,490 البقاء هناك إلى الأبد. 424 00:19:39,490 --> 00:19:42,080 الكمبيوتر ذكي بما فيه الكفاية لمعرفة أن عند إغلاق البرنامج، فإنه 425 00:19:42,080 --> 00:19:46,440 يجب التخلص من كل من الذاكرة التي كان مرتبطا مع هذا البرنامج. 426 00:19:46,440 --> 00:19:51,240 >> ومع ذلك، هناك الأدوات التي يمكن تشغيلها على برنامج للكشف إذا، عندما 427 00:19:51,240 --> 00:19:54,720 انتهى البرنامج، كنت قد نسيت لتحرير بعض الذاكرة. 428 00:19:54,720 --> 00:19:57,960 وعن مشكلتك المقبل حيث تحدد عليك أن تكون باستخدام malloc واستخدام 429 00:19:57,960 --> 00:20:02,610 مؤشرات، وسوف يتم تشغيل هذا برنامج على برنامج لمعرفة ما إذا كان، 430 00:20:02,610 --> 00:20:06,530 عندما يعود الرئيسي، كان لديك بعض الأشياء التي تركت unfreed. 431 00:20:06,530 --> 00:20:09,130 >> حتى انهم لا تنوي البقاء malloced إلى الأبد في جهاز الكمبيوتر الخاص بك. 432 00:20:09,130 --> 00:20:11,720 من شأنها أن تكون الإسراف، لأن بسرعة كبيرة، وأجهزة الكمبيوتر 433 00:20:11,720 --> 00:20:12,960 سوف نفاد الذاكرة. 434 00:20:12,960 --> 00:20:16,450 ولكن إذا كانت تستمر حتى نهاية الخاص برمجة وانهم لم يطلق سراح والخاص 435 00:20:16,450 --> 00:20:20,260 إنهاء البرنامج، وهذا لا يزال يمثل مشكلة أن هذه الأداة سوف تساعدك على معالجتها. 436 00:20:20,260 --> 00:20:21,520 >> الطالب: هل هذا Valgrind؟ 437 00:20:21,520 --> 00:20:22,910 >> JASON هيرشهورن: انها دعا Valgrind. 438 00:20:22,910 --> 00:20:23,520 وعليك أن تكون - 439 00:20:23,520 --> 00:20:25,780 >> الطالب: ولكن ليس لدينا لمعرفة أن لهذه المسابقة، على الرغم من؟ 440 00:20:25,780 --> 00:20:27,600 أعني، وقد تحدثت عن ذلك قليلا في المحاضرة. 441 00:20:27,600 --> 00:20:33,600 >> JASON هيرشهورن: حتى Valgrind هو اسم تلك الأداة. 442 00:20:33,600 --> 00:20:37,180 معرفة ما تقوم به هو بما فيه الكفاية لهذه المسابقة. 443 00:20:37,180 --> 00:20:40,200 ولكنك لم تستخدم حتى الآن على هاتفك مشكلة تعيين لأننا لم تكن لديهم 444 00:20:40,200 --> 00:20:43,520 مجموعة المشكلة التي تعاملت بشكل صريح مع malloc أو هل تستخدم malloc. 445 00:20:43,520 --> 00:20:45,330 لذلك كنت لم تستخدم Valgrind حتى الآن. 446 00:20:45,330 --> 00:20:47,760 ولكن سوف تستخدم ذلك عاجلا وليس آجلا. 447 00:20:47,760 --> 00:20:48,710 >> الطالب: هل يمكن أن يتكرر ما هو Valgrind؟ 448 00:20:48,710 --> 00:20:49,190 >> JASON هيرشهورن: عذرا؟ 449 00:20:49,190 --> 00:20:51,240 >> الطالب: هل يمكنك تكرار ما الغرض من Valgring هو؟ 450 00:20:51,240 --> 00:20:53,100 >> JASON هيرشهورن: Valgrind هو اسم - 451 00:20:53,100 --> 00:20:59,890 مثل GDB يساعدك على تصحيح البرنامج الخاص بك، Valgrind يساعدك على معرفة ما اذا كان 452 00:20:59,890 --> 00:21:03,210 لم يتم اطلاق سراح الأمور عندما يغلق البرنامج. 453 00:21:03,210 --> 00:21:05,110 لذلك عليك تشغيلها على البرنامج. 454 00:21:05,110 --> 00:21:09,230 ويخرج البرنامج، وأنه سوف يقول ودعا البرنامج malloc هذا العدد الكبير من 455 00:21:09,230 --> 00:21:13,670 مرات عديدة لهذا بايت، وكنت دعا حرة فقط هذا مرات عديدة. 456 00:21:13,670 --> 00:21:16,520 وهكذا تركت هذه العديد من بايت دون أن يطلق سراحه. 457 00:21:16,520 --> 00:21:18,050 أو أنها سوف نقول لكم لقد تحررت كل شيء. 458 00:21:18,050 --> 00:21:19,070 وظيفة جيدة. 459 00:21:19,070 --> 00:21:19,480 >> الطالب: OK. 460 00:21:19,480 --> 00:21:21,060 وانه دعا Valgring؟ 461 00:21:21,060 --> 00:21:24,940 >> JASON هيرشهورن: V-A-L-G-R-I-N-D. 462 00:21:24,940 --> 00:21:25,970 >> الطالب: سؤال حول المؤشرات. 463 00:21:25,970 --> 00:21:30,080 لذلك نقول لكم لقد نجم ن x تساوي شيئا. 464 00:21:30,080 --> 00:21:33,330 الذي يساوي، مهما كنت وضع هناك، هو أن ما يجري وضعها داخل 465 00:21:33,330 --> 00:21:36,120 س ما يتم الإشارة إلى، أو المؤشر س؟ 466 00:21:36,120 --> 00:21:37,690 >> JASON هيرشهورن: هل لك تكرار السؤال؟ 467 00:21:37,690 --> 00:21:39,340 يمكننا استدراجه بينما كنت أقول ذلك؟ 468 00:21:39,340 --> 00:21:42,710 >> الطالب: في هذه المسابقة، في الواقع، و واحد كنت أرسلت لنا، وكان مثل، شار 469 00:21:42,710 --> 00:21:46,520 نجمة الحقيقة يساوي الصخور CS50، أليس كذلك؟ 470 00:21:46,520 --> 00:21:52,190 فهل يعني ذلك أن تلك الصخور CS50 ما الحقيقة يشير إلى؟ 471 00:21:52,190 --> 00:21:55,810 >> JASON هيرشهورن: إذن أنت تتحدث حول نجم شار في سلسلة، كيف 472 00:21:55,810 --> 00:21:56,460 الذي يعمل؟ 473 00:21:56,460 --> 00:21:56,890 نعم. 474 00:21:56,890 --> 00:21:57,700 موافق. 475 00:21:57,700 --> 00:21:59,140 دعونا رسم هذا أكثر من هنا. 476 00:21:59,140 --> 00:22:07,100 >> [SIDE حوار] 477 00:22:07,100 --> 00:22:11,130 >> JASON هيرشهورن: إذن هذا المتغير سيكون من نوع شار نجوم. 478 00:22:11,130 --> 00:22:14,580 كيف كبيرة هو متغير نجم نوع شار؟ 479 00:22:14,580 --> 00:22:15,510 كم عدد وحدات البايت؟ 480 00:22:15,510 --> 00:22:16,450 >> الطلبة: أربعة. 481 00:22:16,450 --> 00:22:18,210 >> JASON هيرشهورن: انها أربعة بايت. 482 00:22:18,210 --> 00:22:21,420 كيف كثير من الحقوق هو متغير نجم نوع int؟ 483 00:22:21,420 --> 00:22:22,210 >> الطلبة: أربعة. 484 00:22:22,210 --> 00:22:24,910 >> JASON هيرشهورن: أربعة بايت. 485 00:22:24,910 --> 00:22:28,280 إذا كان مؤشر، ثم هو دائما أربعة بايت، لأن المؤشرات، على 486 00:22:28,280 --> 00:22:30,070 القيمة هو عنوان الذاكرة. 487 00:22:30,070 --> 00:22:35,160 وعناوين الذاكرة على CS50 الأجهزة أربعة بايت. 488 00:22:35,160 --> 00:22:42,900 لذلك عندما نطالب getstring أو عند قيامنا مثلا، يساوي stringname، ثم في 489 00:22:42,900 --> 00:22:46,140 التنصيص وضع سلسلة، نحن نضع - 490 00:22:46,140 --> 00:22:46,920 حسنا، هذا هو مختلف قليلا. 491 00:22:46,920 --> 00:22:48,630 سنفعل getstring كما في المثال. 492 00:22:48,630 --> 00:22:52,150 أو شيء نجمة شار تساوي السلسلة. 493 00:22:52,150 --> 00:22:54,360 آسف، أعطني مثال أن تقرأ؟ 494 00:22:54,360 --> 00:22:57,590 >> الطالب: شار نجمة الحقيقة يساوي "الصخور CS50" في علامات اقتباس مزدوجة. 495 00:22:57,590 --> 00:23:02,260 >> JASON هيرشهورن: إذن هذا النجم، وهذا وسوف ندعو هذا المتغير س لدينا 496 00:23:02,260 --> 00:23:04,060 أغراض عامة. 497 00:23:04,060 --> 00:23:05,970 قمنا بإنشاء متغير يسمى خ. 498 00:23:05,970 --> 00:23:07,610 انها نوع شار نجوم. 499 00:23:07,610 --> 00:23:10,950 بل هو مؤشر إلى سلسلة من الأحرف. 500 00:23:10,950 --> 00:23:12,200 حتى أسفل هنا - 501 00:23:12,200 --> 00:23:23,710 502 00:23:23,710 --> 00:23:25,890 >> لذلك هذا هو كيف أن هذا من شأنه العمل في الذاكرة. 503 00:23:25,890 --> 00:23:27,410 وهذا من شأنه تخزين عنوان الذاكرة. 504 00:23:27,410 --> 00:23:31,770 فإنه تخزين عنوان الذاكرة الحرف الأول في المصفوفة. 505 00:23:31,770 --> 00:23:33,830 ثم عند يتبع المؤشر، تفعل 506 00:23:33,830 --> 00:23:35,200 الحصول على الحرف الأول. 507 00:23:35,200 --> 00:23:38,780 >> وإذا كنت تقرأ هذا الشيء مثل سلسلة، الكمبيوتر الذكية 508 00:23:38,780 --> 00:23:42,930 يكفي أن نعرف، وقراءة هذا الشيء كله حتى يحصل على رد فعل عنيف 0. 509 00:23:42,930 --> 00:23:45,530 ولكن إذا كنت تقرأ ذلك الطابع في وقت واحد، لذلك كنت بالتكرار عبر 510 00:23:45,530 --> 00:23:49,910 هذه السلسلة، فإنك سوف مجرد قراءة الحرف في وقت واحد حتى تحصل على 511 00:23:49,910 --> 00:23:50,850 مائل 0. 512 00:23:50,850 --> 00:23:52,335 قد لا يجيب لكم السؤال، وإن كان. 513 00:23:52,335 --> 00:23:55,610 >> الطالب: نعم، ولكن ليس لديك malloced أن الفضاء 514 00:23:55,610 --> 00:23:58,400 بعد لهذا المؤشر. 515 00:23:58,400 --> 00:24:02,510 >> JASON هيرشهورن: لذلك أنا لست متأكدا تماما بالضبط ما كنت تبحث في، 516 00:24:02,510 --> 00:24:03,640 لأنني لم أكن جعل هذا الاختبار. 517 00:24:03,640 --> 00:24:06,370 كان من المفترض أن تكون مفيدة أن الموارد من TF آخر. 518 00:24:06,370 --> 00:24:11,380 إذا كنت تقوم بإنشاء سلسلة على كومة أو كمتغير المحلية، وأنها سوف 519 00:24:11,380 --> 00:24:16,920 يكون مجرد مجموعة من التهم بدلا من عموما نجم شار لافتا إلى 520 00:24:16,920 --> 00:24:18,600 سلسلة أخرى. 521 00:24:18,600 --> 00:24:20,550 ولكني لا أعرف. 522 00:24:20,550 --> 00:24:25,065 يمكن أن تكون مؤشر لآخر سلسلة على المكدس كذلك. 523 00:24:25,065 --> 00:24:27,240 نعم. 524 00:24:27,240 --> 00:24:31,116 >> الطالب: أنا أعلم أنك تحتاج إلى تخصيص الذاكرة إذا كان المؤشر 525 00:24:31,116 --> 00:24:33,360 أعلن الحصول على داخل من وظيفة أخرى. 526 00:24:33,360 --> 00:24:36,740 لا تحتاج إلى أن تفعل الشيء نفسه لو كان أعلن يجري داخل الرئيسي، 527 00:24:36,740 --> 00:24:39,570 كنت استخدامه داخل الرئيسي؟ 528 00:24:39,570 --> 00:24:43,590 >> JASON هيرشهورن: لذا نعم. 529 00:24:43,590 --> 00:24:46,670 يمكنك يعلن مؤشر إلى أي عنوان الذاكرة في الذاكرة. 530 00:24:46,670 --> 00:24:51,440 يمكن أن يكون عنوان ذاكرة المحلية متغير، على الرغم من كثير من الأحيان، 531 00:24:51,440 --> 00:24:55,760 الناس لا تعلن عناوين الذاكرة إلى المتغيرات المحلية لأنها تذهب 532 00:24:55,760 --> 00:24:59,890 بعيدا مرة واحدة أن يعود ظيفة، والتي هو السبب في أننا malloc عموما الأشياء. 533 00:24:59,890 --> 00:25:04,630 ولكن نعم، هل يمكن أن تعلن مؤشر لمتغير محلي آخر. 534 00:25:04,630 --> 00:25:06,360 مجرد عادة لا يتم ذلك. 535 00:25:06,360 --> 00:25:09,480 ولكن يمكنني أن نلقي نظرة على ذلك شيء محدد بعد انتهاء اليوم الدراسي. 536 00:25:09,480 --> 00:25:10,650 نعم. 537 00:25:10,650 --> 00:25:12,350 >> الطالب: أعتقد أن هذا هو نوع ما هو المطلوب. 538 00:25:12,350 --> 00:25:16,930 فإنه لا يبدو غريبا أن يتم تهيئة مؤشر ليس بوصفه 539 00:25:16,930 --> 00:25:20,760 عنوان، ولكن كما ما يبدو وكأنه القيمة. 540 00:25:20,760 --> 00:25:25,970 يبدو أن CS50 هو ما يدور في داخل الشيء الذي أشار إلى و 541 00:25:25,970 --> 00:25:28,820 ليس العنوان الفعلي، أليس كذلك؟ 542 00:25:28,820 --> 00:25:30,520 >> JASON هيرشهورن: ولهذا لم يكن الأمر كذلك، وإن كان. 543 00:25:30,520 --> 00:25:32,470 هذا ليس ما يحدث. 544 00:25:32,470 --> 00:25:35,910 عندما تقوم بتعريف نجم شار، انها عنوان الذاكرة. 545 00:25:35,910 --> 00:25:38,860 المؤشرات كلها عناوين الذاكرة لافتا إلى شيء آخر. 546 00:25:38,860 --> 00:25:41,480 ان هناك شيئا آخر يمكن أن يكون على المكدس، ولكن هو دائما تقريبا على 547 00:25:41,480 --> 00:25:43,440 كومة في الطريق سنرى استخدامه. 548 00:25:43,440 --> 00:25:46,860 549 00:25:46,860 --> 00:25:53,500 ولكن stringname يساوي اقتباس مزدوجة "getstring،" يمكننا أن نرى ذلك ونحن 550 00:25:53,500 --> 00:25:55,010 يمكن أن ننظر من خلال ذلك، ورمز ذلك. 551 00:25:55,010 --> 00:26:01,190 لا يتم حفظها في سلسلة getstring هذا المتغير، أو أيا كان السلسلة 552 00:26:01,190 --> 00:26:04,580 يتم لا يتم حفظ الاسم في ذلك متغير، لأن هذا ليس كيف 553 00:26:04,580 --> 00:26:06,070 العمل المؤشرات. 554 00:26:06,070 --> 00:26:06,770 فهل هذا يعقل؟ 555 00:26:06,770 --> 00:26:07,170 >> الطالب: نعم. 556 00:26:07,170 --> 00:26:08,570 >> JASON هيرشهورن: OK. 557 00:26:08,570 --> 00:26:11,690 نأمل، أن لم يكن مربكة لأحد. 558 00:26:11,690 --> 00:26:15,732 ولكن إذا كان، يمكننا أن ننظر في الامر مرة اخرى في بعض الشيء، لأننا ذاهبون فعلا 559 00:26:15,732 --> 00:26:19,240 إلى رمز الشيء الذي يؤمل العمل مع سلاسل وتساعدك على الشعور 560 00:26:19,240 --> 00:26:22,170 أكثر راحة معهم. 561 00:26:22,170 --> 00:26:24,869 >> أي أسئلة أخرى تتعلق بهذه الموضوعات أو الموضوعات الأخرى التي 562 00:26:24,869 --> 00:26:26,119 أنا وضعت نسخة احتياطية؟ 563 00:26:26,119 --> 00:26:32,280 564 00:26:32,280 --> 00:26:34,840 و- 565 00:26:34,840 --> 00:26:36,310 الآن. 566 00:26:36,310 --> 00:26:37,630 نعم، الدن. 567 00:26:37,630 --> 00:26:39,860 >> ALDEN: لذلك هذا هو لا علاقة لها تماما، ولكن يمكننا فقط يذهب أكثر 568 00:26:39,860 --> 00:26:42,760 بسرعة حقا ما نحتاج إلى معرفته حول الفرق بين 32 و 569 00:26:42,760 --> 00:26:46,345 جهاز 64 بت؟ 570 00:26:46,345 --> 00:26:47,740 >> JASON هيرشهورن: نعم. 571 00:26:47,740 --> 00:26:52,111 حتى 32 بت هو عدد وحدات البايت؟ 572 00:26:52,111 --> 00:26:53,060 >> ALDEN: انها أربعة بايت. 573 00:26:53,060 --> 00:26:54,360 >> JASON هيرشهورن: انها أربعة بايت. 574 00:26:54,360 --> 00:26:58,420 و 64 بت هو عدد وحدات البايت؟ 575 00:26:58,420 --> 00:26:59,112 >> الطالب: ثمانية. 576 00:26:59,112 --> 00:27:00,610 >> JASON هيرشهورن: ثمانية بايت. 577 00:27:00,610 --> 00:27:03,980 ذلك مرة أخرى، وثمانية بت بايت واحد. 578 00:27:03,980 --> 00:27:08,340 الأجهزة CS50 الخاص بك هو آلة 32 بت. 579 00:27:08,340 --> 00:27:13,650 حتى عناوين الذاكرة أربعة بايت. 580 00:27:13,650 --> 00:27:17,460 هناك 2 إلى 32 عناوين الذاكرة. 581 00:27:17,460 --> 00:27:21,310 0-2 إلى ناقص 1 32. 582 00:27:21,310 --> 00:27:27,630 وأنا لست إيجابية، ولكن هذا ربما في نطاق ما تحتاج إلى 583 00:27:27,630 --> 00:27:35,230 نعرف على وجه آلة 32 بت، تلك الذاكرة عناوين هي، مرة أخرى، أربعة بايت، 584 00:27:35,230 --> 00:27:39,620 وهذا هو الحد الأقصى للمبلغ من عناوين الذاكرة. 585 00:27:39,620 --> 00:27:41,680 >> أيضا، وأنواع البيانات - 586 00:27:41,680 --> 00:27:45,020 هذا قد يكون شيء ما جيدا أن من الجدير بالذكر. 587 00:27:45,020 --> 00:27:49,610 حجم نوع البيانات يعتمد على الجهاز كنت تعمل مع. 588 00:27:49,610 --> 00:27:56,760 لذلك شار، حرف واحد، هو كيف العديد من وحدات البايت على موقعنا على الأجهزة CS50؟ 589 00:27:56,760 --> 00:27:57,980 بايت واحد. 590 00:27:57,980 --> 00:28:02,310 وانها في الواقع بايت واحد كما بشكل جيد على جهاز 64 بت. 591 00:28:02,310 --> 00:28:05,920 >> ومعظم أنواع البيانات هي نفس العدد من بايت على الجهازين. 592 00:28:05,920 --> 00:28:11,620 ولكن بعض أنواع البيانات ستكون مختلفة على الجهازين. 593 00:28:11,620 --> 00:28:14,590 بحيث سيكون يحتمل أن الشيء الوحيد الذي تحتاج إلى معرفته. 594 00:28:14,590 --> 00:28:16,710 >> ولكن حتى هذا، كما أعتقد، هو أبعد حدود - 595 00:28:16,710 --> 00:28:20,990 أنا واثق تقريبا، إذا كنت ننظر إلى الوراء في مسابقات القديمة، فإنه يقول، تفترض ل 596 00:28:20,990 --> 00:28:24,090 الترميز المشاكل التي تستخدمه آلة 32 بت. 597 00:28:24,090 --> 00:28:26,620 598 00:28:26,620 --> 00:28:30,620 ولكن هناك، للذهاب إلى جانب أنه في حال كنت مهتما، وهناك 599 00:28:30,620 --> 00:28:35,920 أنواع البيانات التي هي نفسها حجم على كافة الأجهزة. 600 00:28:35,920 --> 00:28:42,670 >> إذا كنت قد رأيت شيئا من هذا القبيل uint32_t، كنت قد تكون أو 601 00:28:42,670 --> 00:28:43,260 لا لم أر ذلك. 602 00:28:43,260 --> 00:28:44,290 هذا هو نوع البيانات. 603 00:28:44,290 --> 00:28:47,570 هذا ما يقول، يكون 32 بت بغض النظر عن ما هذا الجهاز في وضع التشغيل. 604 00:28:47,570 --> 00:28:50,350 حتى عندما يكون الناس الكتابة المحمولة رمز، وأنها ربما لن تستخدم رجات. 605 00:28:50,350 --> 00:28:53,260 بدلا من ذلك أنها سوف تستخدم هذه البيانات الأخرى سوف أنواع أنهم يعرفون أن تكون هي نفسها 606 00:28:53,260 --> 00:28:54,780 الحجم على كل جهاز واحد. 607 00:28:54,780 --> 00:28:58,080 608 00:28:58,080 --> 00:28:58,250 مادو. 609 00:28:58,250 --> 00:29:00,150 >> مادو: كان لي سؤال حول عملية تجميع. 610 00:29:00,150 --> 00:29:04,110 لذلك إذا كنت تكتب برنامج يستخدم مكتبة مثل CS50 أو شيء 611 00:29:04,110 --> 00:29:06,840 من هذا القبيل، وأنا أعلم أن تلك المكتبة لديه، في مرحلة ما، يكون 612 00:29:06,840 --> 00:29:08,590 جمعت وربطت فيها. 613 00:29:08,590 --> 00:29:13,380 ولكن كم من هذا يحدث أثناء تجميع برنامجك؟ 614 00:29:13,380 --> 00:29:15,880 ما هو جزء من تلك العملية المكتبة يحدث عندما كنت 615 00:29:15,880 --> 00:29:18,560 تجميع البرنامج الخاص بك؟ 616 00:29:18,560 --> 00:29:24,020 >> JASON هيرشهورن: لذا دعونا نذهب أكثر عموما خطوات هذه العملية. 617 00:29:24,020 --> 00:29:26,280 تكتب الخاص بك. ملف ج. 618 00:29:26,280 --> 00:29:33,530 في الخاص بك. ملف ج، كنت # تتضمن الخاص المكتبات رأس، على سبيل المثال، cs50.h. 619 00:29:33,530 --> 00:29:39,480 ماذا يفعل ذلك حادة تشمل خط القيام به لبرنامجك؟ 620 00:29:39,480 --> 00:29:40,525 Akchar. 621 00:29:40,525 --> 00:29:43,350 >> AKCHAR: وتضيف النماذج من وظائف من رأس 622 00:29:43,350 --> 00:29:45,120 الملفات في المكتبات. 623 00:29:45,120 --> 00:29:45,600 >> JASON هيرشهورن: بالضبط. 624 00:29:45,600 --> 00:29:49,870 وتضيف تلك النماذج الدالة إلى التعليمات البرمجية. 625 00:29:49,870 --> 00:29:55,230 لذلك عندما يتم ترجمة التعليمات البرمجية الخاصة بك في في المراحل المبكرة، يعرف المترجم 626 00:29:55,230 --> 00:29:59,250 أن هذه الوظائف موجودة حقا، و أنه في مكان ما أنها تم تعريفها. 627 00:29:59,250 --> 00:30:02,460 الملفات. ح لا تشمل تعريفات لهذه الوظائف أو كيف 628 00:30:02,460 --> 00:30:03,950 أنها تعمل في الواقع. 629 00:30:03,950 --> 00:30:07,960 Cs50.h يشمل مجرد شيء أن يقول getstring هو الشيء الحقيقي الذي 630 00:30:07,960 --> 00:30:09,270 يمكن أن يحدث. 631 00:30:09,270 --> 00:30:14,240 ويقول standardio.h printf هو شيء حقيقي يمكن أن يحدث. 632 00:30:14,240 --> 00:30:23,190 >> رأس ذلك لغة ج الخاص بك مع هذا. يحصل تحول الملف إلى بعض 633 00:30:23,190 --> 00:30:27,750 كود المقروءة آليا والتي في النهاية يحصل تحول إلى ثنائي 634 00:30:27,750 --> 00:30:30,030 رمز، و0 1 في. 635 00:30:30,030 --> 00:30:33,590 وهذا هو الرمز الذي في نهاية المطاف يعدم. 636 00:30:33,590 --> 00:30:38,550 للل خط CS50 - على سبيل المثال، عندما كنت تكتب ضجيج - 637 00:30:38,550 --> 00:30:41,830 ثم قمت بتضمين-L CS50، كنت اكتب فيها أن 638 00:30:41,830 --> 00:30:42,180 وأنت ترى ذلك. 639 00:30:42,180 --> 00:30:43,890 عند إرسال جعل، عليك نرى أن التشكيلة هنا. 640 00:30:43,890 --> 00:30:47,740 وسنرى ذلك في الثانية عندما نحن رمز أو في وقت لاحق عندما كنا التعليمات البرمجية. 641 00:30:47,740 --> 00:30:50,390 >> ولكن هذا الخط CS50-L لا شيء مختلفة بعض الشيء من 642 00:30:50,390 --> 00:30:52,440 تشمل # cs50.h. 643 00:30:52,440 --> 00:30:56,300 ماذا الخط الذي CS50-L تفعل؟ 644 00:30:56,300 --> 00:30:56,820 افي؟ 645 00:30:56,820 --> 00:31:00,310 >> AVI: أريد أن أقول أنه يربط ما بين المكتبة إلى وظيفة 646 00:31:00,310 --> 00:31:02,710 الدعوة، مثل ملفات س. 647 00:31:02,710 --> 00:31:08,200 >> JASON هيرشهورن: إذن جدا وثيقة، إن لم يكن على الفور. 648 00:31:08,200 --> 00:31:16,220 للل CS50 يأخذ ملف ثنائي و يدمج مع ملف ثنائي لديك. 649 00:31:16,220 --> 00:31:21,410 حتى cs50.h، وليس هناك نقطة تحول في cs50.h من لغة C إلى ثنائي كل 650 00:31:21,410 --> 00:31:23,130 مرة واحدة يجري استخدامها. 651 00:31:23,130 --> 00:31:26,650 من شأنها أن تكون سخيفة، لأن ذلك سوف تضيع الكثير من الوقت. 652 00:31:26,650 --> 00:31:30,420 لذلك تم بالفعل تحويلها برمجيا وتحولت إلى ملف قابل للتنفيذ. 653 00:31:30,420 --> 00:31:35,430 والآن سوف يتم دمج مع الملف الخاص بك في نهاية المطاف. 654 00:31:35,430 --> 00:31:38,370 حتى أولئك في 1 و 0 تسير دمج مع اولادكم 655 00:31:38,370 --> 00:31:39,150 و0 في نهاية. 656 00:31:39,150 --> 00:31:43,670 وحتى الآن سيكون لديك في الواقع الفعلي 1 و 0 التي تحدد كيفية getstring، 657 00:31:43,670 --> 00:31:47,890 على سبيل المثال، يعمل، أو كيف printf، على سبيل المثال، يعمل. 658 00:31:47,890 --> 00:31:52,750 >> ولمزيد من المعلومات، هناك المجمعين القصيرة التي نيت يعطي أن 659 00:31:52,750 --> 00:31:55,410 يجب أن تحقق من أن يذهب من خلال هذه الخطوات. 660 00:31:55,410 --> 00:31:56,050 ولكن - 661 00:31:56,050 --> 00:31:56,560 نعم. 662 00:31:56,560 --> 00:32:01,700 >> الطالب: هل هم دائما في ملفات س. عندما يكونون في شكل مكتبة، 663 00:32:01,700 --> 00:32:06,764 جاهزة للدمج، ربط - مثل انهم في الشفرة الثنائية؟ 664 00:32:06,764 --> 00:32:07,600 >> JASON هيرشهورن: OK. 665 00:32:07,600 --> 00:32:08,420 ما - 666 00:32:08,420 --> 00:32:11,780 >> الطالب: هل هذا هو الحال دائما ل المكتبات عند ربطها؟ 667 00:32:11,780 --> 00:32:12,500 >> JASON هيرشهورن: نعم. 668 00:32:12,500 --> 00:32:17,300 ولذلك لا يوجد. ق الملفات، والتي ستكون رمز الجهاز، والتي ستكون أيضا 669 00:32:17,300 --> 00:32:17,975 خفي لك. 670 00:32:17,975 --> 00:32:19,410 كنت لا داعي للقلق بشأن هؤلاء. 671 00:32:19,410 --> 00:32:24,930 ولكن عموما، نعم، أنها سوف يكون في. س ملفات جاهزة للذهاب. 672 00:32:24,930 --> 00:32:27,170 >> الطالب: حتى عندما كنت السفينة مكتبة، لا تقوم بشحن فقط 673 00:32:27,170 --> 00:32:28,880 و. ح و. س؟ 674 00:32:28,880 --> 00:32:32,210 كنت لا السفينة أو ج. ق. 675 00:32:32,210 --> 00:32:33,070 >> JASON هيرشهورن: وهكذا - 676 00:32:33,070 --> 00:32:36,260 وهذا هو في هذا قصيرة وكذلك، إذا ويبدو أن هذه المعلومات القادمة من 677 00:32:36,260 --> 00:32:36,700 قليلا بسرعة. 678 00:32:36,700 --> 00:32:39,870 ولكن على المدى القصير على المجمعين يتحدث عن هذا أيضا. 679 00:32:39,870 --> 00:32:43,290 عند شحنه مكتبة، إذا كنت السفينة و. ح، ملف الرأس، وتلك 680 00:32:43,290 --> 00:32:46,290 نماذج وظيفة، وعلى 1 و 0، وهذا كل ما عليك أن تعطي. 681 00:32:46,290 --> 00:32:50,640 لا تحتاج لإعطاء كيف تعمل وظيفة، وملف ج. 682 00:32:50,640 --> 00:32:56,360 لأن نقطة من التجريد، أو وتشير واجهات برمجة التطبيقات، وهذه النقطة في هذه SPL، 683 00:32:56,360 --> 00:32:59,650 المكتبة المحمولة ستانفورد، انها لك أن لا تقلق حول كيفية جديدة 684 00:32:59,650 --> 00:33:04,220 GRect يعمل، أو كيف يتحرك الأعمال، أو كيف تضيف الأعمال. 685 00:33:04,220 --> 00:33:06,520 كل ما تحتاج إلى معرفته هو أن الوظيفة هي الدالة التي يمكن 686 00:33:06,520 --> 00:33:08,880 استخدام، وأنه يفعل ذلك. 687 00:33:08,880 --> 00:33:12,760 لذلك كنت حقا لا تحتاج إلى معرفة كيفية انها مكتوبة في C. تحتاج فقط ل 688 00:33:12,760 --> 00:33:15,460 تعرف، هنا وظائف، ما القيام به، وهنا ال 1 و 0 689 00:33:15,460 --> 00:33:18,870 عندما كنت تريد حقا أن استخدامها. 690 00:33:18,870 --> 00:33:19,530 >> بارد. 691 00:33:19,530 --> 00:33:26,980 أي أسئلة أخرى على المجمعين أو مواضيع أخرى على متن الطائرة؟ 692 00:33:26,980 --> 00:33:30,300 >> الطالب: لدي سؤال من تنفيذ المهام العودية. 693 00:33:30,300 --> 00:33:31,170 سؤال عن العودية. 694 00:33:31,170 --> 00:33:33,030 كان لدي شعور التي من شأنها أن تأتي. 695 00:33:33,030 --> 00:33:38,310 لذلك دعونا نذهب بسرعة من خلال العودية مع محددة 696 00:33:38,310 --> 00:33:40,690 سبيل المثال، وهي وظيفة مضروب. 697 00:33:40,690 --> 00:33:44,920 لأن هذا هو مثال غالبا ما يأتي أو يستخدم 698 00:33:44,920 --> 00:33:46,170 لتوضيح العودية. 699 00:33:46,170 --> 00:33:52,390 700 00:33:52,390 --> 00:33:56,410 >> حتى "4"! ونصها كما 4 مضروب. 701 00:33:56,410 --> 00:33:59,120 وماذا يعني 4 مضروب؟ 702 00:33:59,120 --> 00:34:00,696 ماذا تفعل ذلك؟ 703 00:34:00,696 --> 00:34:02,235 كيف يمكن حساب 4 مضروب؟ 704 00:34:02,235 --> 00:34:05,250 705 00:34:05,250 --> 00:34:07,960 4 مرات 3 مرات 2 مرات 1. 706 00:34:07,960 --> 00:34:11,889 >> حتى طريقة أخرى لإرسال 4 مضروب هو أن أكتب هذا. 707 00:34:11,889 --> 00:34:16,780 708 00:34:16,780 --> 00:34:19,022 4 مرات 3 مضروب. 709 00:34:19,022 --> 00:34:22,080 لأن مضروب هو 3 3 مرات 2 مرات 1. 710 00:34:22,080 --> 00:34:27,580 حتى 4 مرات 3 مضروب هو 4 مرة 3 مرات 2 مرات 1. 711 00:34:27,580 --> 00:34:32,679 هذا هو السبب في مضروب هو عظيم مرشح لالعودية، لأنه 712 00:34:32,679 --> 00:34:36,630 من الواضح أن هناك شيء ما يحدث مرارا ومرارا وتكرارا على 713 00:34:36,630 --> 00:34:39,820 عدد أصغر من الأمور حتى تصل إلى نهاية. 714 00:34:39,820 --> 00:34:42,570 عندما تصل إلى 1، 1 مضروب هو 1. 715 00:34:42,570 --> 00:34:43,719 لا يمكنك الذهاب أبعد من ذلك بكثير. 716 00:34:43,719 --> 00:34:47,219 ويعرف أيضا مضروب 0 ك 1. 717 00:34:47,219 --> 00:34:50,679 لذلك عندما تحصل على 1 أو 0، كنت في النهاية، ويمكنك 718 00:34:50,679 --> 00:34:53,219 بدء تسير احتياطية. 719 00:34:53,219 --> 00:34:59,540 لذلك إذا أردنا أن يكتب العودية وظيفة لحساب مضروب، 720 00:34:59,540 --> 00:35:02,170 ونحن في طريقنا إلى كتابة بعض شبة الكود لذلك الآن. 721 00:35:02,170 --> 00:35:03,300 قبل أن نكتب شبة الكود - 722 00:35:03,300 --> 00:35:05,660 سأعطيك الرجال بضع دقائق لكتابة التعليمات البرمجية الزائفة أو مجرد التفكير 723 00:35:05,660 --> 00:35:09,600 عن ذلك - هناك نوعان من الأشياء كل يحتاج وظيفة العودية. 724 00:35:09,600 --> 00:35:12,530 ما هي تلك الأشياء اثنين؟ 725 00:35:12,530 --> 00:35:13,220 >> جاك: انها لاستدعاء نفسها. 726 00:35:13,220 --> 00:35:13,680 >> JASON هيرشهورن: نوح؟ 727 00:35:13,680 --> 00:35:14,460 أوه، جاك. 728 00:35:14,460 --> 00:35:15,100 المضي قدما. 729 00:35:15,100 --> 00:35:16,640 >> جاك: انها لاستدعاء نفسها. 730 00:35:16,640 --> 00:35:19,220 >> JASON هيرشهورن: حتى العودية يحتاج وظيفة مكالمة العودية، و 731 00:35:19,220 --> 00:35:20,220 دعوة إلى نفسه. 732 00:35:20,220 --> 00:35:20,770 هذا هو واحد. 733 00:35:20,770 --> 00:35:21,510 وما هو الشيء الآخر؟ 734 00:35:21,510 --> 00:35:22,250 >> جاك: هناك حالة من القاعدة. 735 00:35:22,250 --> 00:35:23,780 >> JASON هيرشهورن: هناك حالة من القاعدة. 736 00:35:23,780 --> 00:35:26,940 وهناك حالة القاعدة، وهنا عندما نتوقف. 737 00:35:26,940 --> 00:35:29,510 حتى يحصل على وظيفة تسمى الخاص بك. 738 00:35:29,510 --> 00:35:31,410 الحالة الأساسية يأتي أولا. 739 00:35:31,410 --> 00:35:33,710 كنت تريد أن تعرف إذا كنت في نهاية المطاف. 740 00:35:33,710 --> 00:35:37,110 وإذا كنت لا في النهاية، كنت إجراء مكالمة العودية الخاص بك. 741 00:35:37,110 --> 00:35:39,880 وتذهب من خلال هذه الوظيفة مرة أخرى، تحقق حالة الأساسي الخاص بك مرة أخرى. 742 00:35:39,880 --> 00:35:42,575 إذا كنت لا نهاية، وجعل لكم دعوة العودية آخر، 743 00:35:42,575 --> 00:35:44,130 وهلم جرا، وهلم جرا. 744 00:35:44,130 --> 00:35:47,110 >> هذا هو السبب في وظائف العودية دائما تحتاج تلك الحالات وتلك قاعدة 745 00:35:47,110 --> 00:35:48,210 دعوات متكررة. 746 00:35:48,210 --> 00:35:51,280 إذا لم يكن لديك مكالمة العودية، فإنه لن تكون وظيفة متكررة. 747 00:35:51,280 --> 00:35:53,210 إذا لم يكن لديك حالة الأساس، كنت أذهب إلى الأبد، و 748 00:35:53,210 --> 00:35:54,780 لن تكون هناك نهاية. 749 00:35:54,780 --> 00:35:57,870 والحالة الأساسية دائما يأتي أولا، لأنك سوف تحتاج دائما للتحقق 750 00:35:57,870 --> 00:36:00,420 إذا كنت في نهاية العشرين. 751 00:36:00,420 --> 00:36:04,770 حتى قبل ان نفعل بعض شبة الكود، لماذا لا تأخذ دقيقة واحدة للتفكير 752 00:36:04,770 --> 00:36:09,360 كيف وظيفة مضروب العودية أن تكون مكتوبة؟ 753 00:36:09,360 --> 00:36:23,340 754 00:36:23,340 --> 00:36:26,010 >> أيضا، العديد من مثل تقومون به، والكتابة من ذلك على ورقة من الورق 755 00:36:26,010 --> 00:36:27,960 ما كنت ستكون لدينا ل القيام على مسابقة غدا. 756 00:36:27,960 --> 00:36:32,160 الممارسة حتى ربما جيدة لجعل تأكد رمز كنت تكتب 757 00:36:32,160 --> 00:36:34,420 أسفل على ورقة من الورق - 758 00:36:34,420 --> 00:36:35,160 أو يمكنك أن تفعل ذلك. 759 00:36:35,160 --> 00:36:36,710 كنت أعرف أين هي المنقوطة. 760 00:36:36,710 --> 00:36:37,660 تتذكر بناء الجملة. 761 00:36:37,660 --> 00:36:40,400 لأنك لن تكون قادرا على أن يكون مترجم اقول لكم ارتكب خطأ. 762 00:36:40,400 --> 00:37:02,356 763 00:37:02,356 --> 00:37:07,240 >> أيضا، على هذا المنوال، وغدا، عندما لديك مشاكل الترميز، إذا كنت 764 00:37:07,240 --> 00:37:11,490 وهرعت للوقت، أو إذا كنت جدا الخلط حول كيفية كنت من المفترض أن 765 00:37:11,490 --> 00:37:16,030 كتابة شيء معين في ج، فإنه سيكون لزاما عليك أن تكتب الزائفة رمز 766 00:37:16,030 --> 00:37:18,160 أو إرسال تعليقات في كذلك. 767 00:37:18,160 --> 00:37:21,940 لأن هناك الائتمان الجزئي ل الكثير من الأسئلة على هذه المسابقة. 768 00:37:21,940 --> 00:37:24,840 لذلك قد تكون متسرعة، أو لك قد يكون مجرد الخلط. 769 00:37:24,840 --> 00:37:28,030 الكتابة في تصريحات أو الزائفة رمز وغالبا ما تكون الطرق التي 770 00:37:28,030 --> 00:37:29,360 يمكن الحصول على الائتمان الجزئي. 771 00:37:29,360 --> 00:37:31,440 >> حتى لا تترك شيئا فارغا على هذه المسابقة. 772 00:37:31,440 --> 00:37:33,490 ليس هناك عقوبات ل وضع الأشياء فيه. 773 00:37:33,490 --> 00:37:37,650 في الواقع، واضعين في الزائفة رمز أو تعليقات هو الذهاب الى مساعدة الصف 774 00:37:37,650 --> 00:37:40,410 معرفة إذا كنت تعرف فعلا ما كنت تتحدث عن، وربما جائزة 775 00:37:40,410 --> 00:37:42,030 لك بعض الائتمان الجزئي لذلك. 776 00:37:42,030 --> 00:37:44,510 >> أيضا على طول تلك الخطوط، الكتابة بشكل واضح. 777 00:37:44,510 --> 00:37:47,650 إذا لا يمكننا حقا ما كنت تكتب، نحن لن ندعو لكم 778 00:37:47,650 --> 00:37:49,900 في منتصف الليل غدا لشخصية ما كتبته. 779 00:37:49,900 --> 00:37:51,520 نحن ذاهبون لمجرد خلع نقطة. 780 00:37:51,520 --> 00:37:56,570 الكتابة بشكل واضح حتى نتمكن من سماع، أو بالأحرى، يمكننا قراءة ما كتبته. 781 00:37:56,570 --> 00:38:00,230 >> وإذا كان يقول جملتين، لا تكتب فقرة. 782 00:38:00,230 --> 00:38:02,280 اتبع الإرشادات. 783 00:38:02,280 --> 00:38:03,500 الكتابة بشكل واضح. 784 00:38:03,500 --> 00:38:07,720 والكتابة في تلك التعليقات أو شبة الكود للأسئلة التي يمكن أن 785 00:38:07,720 --> 00:38:10,270 جائزة الائتمان الجزئي. 786 00:38:10,270 --> 00:38:12,520 >> حسنا، دعونا نذهب إلى مضروب. 787 00:38:12,520 --> 00:38:15,000 لذلك لدينا وظيفة مضروب. 788 00:38:15,000 --> 00:38:18,400 789 00:38:18,400 --> 00:38:21,550 إذا كان لي أن أكتب هذا في الواقع في C، ما الذي أحتاجه لوضع قبل اسم 790 00:38:21,550 --> 00:38:22,800 وظيفة؟ 791 00:38:22,800 --> 00:38:24,880 792 00:38:24,880 --> 00:38:30,060 نوع الإرجاع، والتي، في هذا الحالة، فإننا سوف تعطيه كثافة العمليات. 793 00:38:30,060 --> 00:38:35,450 ثم داخل الأقواس المتعرجة، هو ما يدور داخل الأقواس المتعرجة ل 794 00:38:35,450 --> 00:38:36,850 وظيفة؟ 795 00:38:36,850 --> 00:38:37,950 >> الطلاب: نوع وسيطة. 796 00:38:37,950 --> 00:38:39,150 >> JASON هيرشهورن: حججه. 797 00:38:39,150 --> 00:38:42,680 مضروب ذلك سوف ربما اتخاذ حجة. 798 00:38:42,680 --> 00:38:44,500 انها سوف ربما يستغرق سوى حجة واحدة. 799 00:38:44,500 --> 00:38:49,450 وسوف نقول انها سوف تتخذ عدد صحيح يسمى خ. 800 00:38:49,450 --> 00:38:52,770 ومرة أخرى، عند كتابة النموذج الأولي وظيفة أو كتابة وظيفة 801 00:38:52,770 --> 00:38:57,110 في التعليمات البرمجية قبل تحديد ذلك، ل إرسال نوع البيانات واسم 802 00:38:57,110 --> 00:39:01,370 هذا المتغير لتلك الوظيفة فقط. 803 00:39:01,370 --> 00:39:06,350 حتى تتمكن من تمرير بعض الرقم في هذا وظيفة، فإنه سوف يكون ويشار إلى خ 804 00:39:06,350 --> 00:39:07,340 داخليا. 805 00:39:07,340 --> 00:39:08,755 >> لدينا وظيفة مضروب لدينا. 806 00:39:08,755 --> 00:39:12,030 807 00:39:12,030 --> 00:39:15,850 نحتاج شيئين، والحالة الأساسية ودعوة العودية. 808 00:39:15,850 --> 00:39:20,900 ما هي الحالة الأساسية للمضروب؟ 809 00:39:20,900 --> 00:39:24,850 شخص الذي كتب بها والذين لم تحدث بعد، ما هو الأساس 810 00:39:24,850 --> 00:39:26,100 الحال بالنسبة للمضروب؟ 811 00:39:26,100 --> 00:39:28,400 812 00:39:28,400 --> 00:39:30,930 >> الطالب: إذا كان n أقل من 2، 1 العودة. 813 00:39:30,930 --> 00:39:33,520 >> JASON هيرشهورن: إذا كانت n هي أقل من 2، 1 العودة. 814 00:39:33,520 --> 00:39:37,216 وأنا أحب ذلك، لأن ذلك يعتني 0 و 1. 815 00:39:37,216 --> 00:39:45,290 ولذا فإننا سوف نبذل س <2، والعودة 1. 816 00:39:45,290 --> 00:39:47,870 إذا كنا الحصول على تمرير 0، اذا حصلنا على مرت 1، وهذه وظيفة 817 00:39:47,870 --> 00:39:49,790 العودة فورا 1. 818 00:39:49,790 --> 00:39:54,020 إذا كنا الحصول على تمرير بعض أكبر عدد من أو يساوي 2، ونحن في طريقنا ل 819 00:39:54,020 --> 00:39:55,370 وجود مكالمة العودية لدينا. 820 00:39:55,370 --> 00:39:57,855 >> وفكيف هو أن الذهاب إلى العمل؟ 821 00:39:57,855 --> 00:40:01,070 يمكن شخص آخر الذين عملوا على هذا الذي لم يتحدث بعد تعطيني 822 00:40:01,070 --> 00:40:07,380 دعوة متكررة لهذه الوظيفة في شبة الكود؟ 823 00:40:07,380 --> 00:40:10,770 إذا كنا في الحصول على تمرير العدد x وانها أكبر من 2، ما 824 00:40:10,770 --> 00:40:13,370 لا نريد أن نفعل؟ 825 00:40:13,370 --> 00:40:17,930 لدينا أيضا مثال مكتوبة على الجانبية التي قد تعطيك تلميحا. 826 00:40:17,930 --> 00:40:20,770 >> الطالب: دعوة مرات س و مضروب س ناقص 1؟ 827 00:40:20,770 --> 00:40:22,020 >> JASON هيرشهورن: الحق بالضبط. 828 00:40:22,020 --> 00:40:24,610 829 00:40:24,610 --> 00:40:37,750 ونحن في طريقنا للعودة مرة س مضروب س ناقص 1. 830 00:40:37,750 --> 00:40:41,810 وأنه، على الرغم من أنني كتبت حتى، أساسا، ما قلته في اللغة الإنجليزية، 831 00:40:41,810 --> 00:40:44,580 هذه الوظيفة مضروب سوف الحصول على استدعاء مرة أخرى. 832 00:40:44,580 --> 00:40:46,320 انها سوف تنفذ على س ناقص 1. 833 00:40:46,320 --> 00:40:49,320 انها سوف تعود مع بعض صحيحا، و ثم أنها سوف تتضاعف هذين 834 00:40:49,320 --> 00:40:52,050 معا، وهذه القيمة ستكون عاد إلى ما يسمى هذا 835 00:40:52,050 --> 00:40:55,010 وظيفة مضروب، والتي قد يكون مثيل آخر من 836 00:40:55,010 --> 00:40:58,420 هذه الوظيفة مضروب. 837 00:40:58,420 --> 00:41:01,360 >> لذلك هذا هو مثال على العودية وظيفة، وهو جدا 838 00:41:01,360 --> 00:41:02,530 وظيفة بسيطة متكررة. 839 00:41:02,530 --> 00:41:04,530 ولكن معظمها سيكون مثل هذا. 840 00:41:04,530 --> 00:41:11,170 إذا كنت ترغب في الحصول على العودية جيدة تحدي للمسابقة، في محاولة الترميز 841 00:41:11,170 --> 00:41:13,230 البحث الثنائية بشكل متكرر. 842 00:41:13,230 --> 00:41:18,950 لأنه إذا فعلتم البحث الثنائي ل مشكلة تعيين ثلاثة، وربما كنت فعلت هذا 843 00:41:18,950 --> 00:41:21,730 تكراري في حلقة من الوقت. 844 00:41:21,730 --> 00:41:23,700 >> ولكن يمكن أيضا أن تكون مكتوبة بشكل متكرر. 845 00:41:23,700 --> 00:41:26,310 وأنت تسير في حاجة إلى الكتابة الخاصة بك وظيفة منفصلة أن يأخذ بعض 846 00:41:26,310 --> 00:41:29,020 مختلف وسائط سطر الأوامر - أو لا سائط سطر الأوامر، وبعض 847 00:41:29,020 --> 00:41:30,910 مختلف الحجج مجرد العادية. 848 00:41:30,910 --> 00:41:33,870 ولكن هل يمكن إرسال البحث الثنائي بشكل متكرر أيضا. 849 00:41:33,870 --> 00:41:36,190 >> الطالب: إذن كنت قد كتبت أيضا، بدلا من العاشر ناقص 1، كنت 850 00:41:36,190 --> 00:41:39,502 قد كتبت أيضا س ناقص ناقص، أو هل يمكن أن يكون 851 00:41:39,502 --> 00:41:40,830 كتابة ناقص ناقص س. 852 00:41:40,830 --> 00:41:44,740 يمكنك فقط شرح بسرعة حقا لماذا تلك ستكون الأمور مختلفة، 853 00:41:44,740 --> 00:41:49,510 مثل ما هو الفرق بين س ناقص ناقص وناقص ناقص س؟ 854 00:41:49,510 --> 00:41:51,320 >> JASON هيرشهورن: لا، أنا لست سوف يذهب الى ذلك. 855 00:41:51,320 --> 00:41:55,500 ولكنني لن أتحدث إليكم عن بعد الطبقة. س ناقص ناقص، ناقص ناقص س 856 00:41:55,500 --> 00:41:57,780 إنقاص x عن طريق 1. 857 00:41:57,780 --> 00:41:59,090 لكنها تفعل ذلك بطريقة مختلفة قليلا. 858 00:41:59,090 --> 00:42:00,340 ولكن أنا لا أريد أن أخوض في ذلك. 859 00:42:00,340 --> 00:42:04,330 860 00:42:04,330 --> 00:42:09,090 أسئلة أخرى حول العودية أو هذه الوظيفة؟ 861 00:42:09,090 --> 00:42:10,140 هذا ليس حقا حتى شبة الكود. 862 00:42:10,140 --> 00:42:15,060 هذا في الأساس هو رمز في سي يو سيكتب لهذا الغرض. 863 00:42:15,060 --> 00:42:19,393 >> OK، أي أسئلة أخرى حول مواضيع هنا؟ 864 00:42:19,393 --> 00:42:19,864 نعم. 865 00:42:19,864 --> 00:42:23,130 >> الطالب: لدي سريع المتهدمة النقطة العائمة والدقة. 866 00:42:23,130 --> 00:42:24,260 >> JASON هيرشهورن: العائمة نقطة والدقة. 867 00:42:24,260 --> 00:42:26,920 يمكن للشخص حقا بسرعة تعطيني المتهدمة من 868 00:42:26,920 --> 00:42:28,210 النقطة العائمة والدقة؟ 869 00:42:28,210 --> 00:42:30,420 كان بكم جميعا في القيام بذلك لديك مشكلة تعيين، لذلك كنت كل 870 00:42:30,420 --> 00:42:31,700 على دراية به. 871 00:42:31,700 --> 00:42:35,090 أو ربما ليس كل واحد منكم. 872 00:42:35,090 --> 00:42:36,602 أي شخص؟ 873 00:42:36,602 --> 00:42:39,530 أعطني بقعة بدأت. 874 00:42:39,530 --> 00:42:40,750 النقطة العائمة والدقة. 875 00:42:40,750 --> 00:42:42,380 ما هي المشكلة؟ 876 00:42:42,380 --> 00:42:42,960 نعم. 877 00:42:42,960 --> 00:42:43,680 فيكتوريا؟ 878 00:42:43,680 --> 00:42:44,480 >> VANESSA: فانيسا. 879 00:42:44,480 --> 00:42:45,285 >> JASON هيرشهورن: فانيسا. 880 00:42:45,285 --> 00:42:45,680 آسف. 881 00:42:45,680 --> 00:42:51,550 >> VANESSA: هناك سوى عدد محدود من الأرقام التي يمكن أن تكون ممثلة 882 00:42:51,550 --> 00:42:57,930 لأنك على ذلك، في منطقتنا حالة، ونظام 32 بت. 883 00:42:57,930 --> 00:43:03,080 بحيث يكون لديك نوع من ل تشكل بعض الأرقام. 884 00:43:03,080 --> 00:43:03,910 >> JASON هيرشهورن: ولهذا صحيح تماما. 885 00:43:03,910 --> 00:43:08,110 لا يوجد سوى كمية معينة من الأرقام التي يمكن أن تكون ممثلة. 886 00:43:08,110 --> 00:43:11,770 إذا كنت ضرب رقمين كبيرة جدا، أنه قد تجاوز مبلغ 887 00:43:11,770 --> 00:43:13,950 من المساحات لديك لتمثيل عدد صحيح. 888 00:43:13,950 --> 00:43:17,930 هذا هو السبب في بعض الأحيان نستخدم طويل بدلا من كثافة العمليات. 889 00:43:17,930 --> 00:43:19,210 الذي يحتوي على أكثر مسافات. 890 00:43:19,210 --> 00:43:21,210 يمكن أن تعقد عددا أكبر. 891 00:43:21,210 --> 00:43:24,310 >> الدقة العائمة نقطة له علاقة مع ذلك، ولكن أيضا له علاقة مع 892 00:43:24,310 --> 00:43:29,300 حقيقة أن الأرقام العشرية هي لا يمثل دائما. 893 00:43:29,300 --> 00:43:29,540 آسف. 894 00:43:29,540 --> 00:43:31,280 اسمحوا لي أن أطرح هذا احتياطية. 895 00:43:31,280 --> 00:43:36,610 عدد عشري 1.0 ليست دائما ممثلة مثل تتوقعون، 896 00:43:36,610 --> 00:43:40,770 1.000000000. 897 00:43:40,770 --> 00:43:50,360 ويمثل في بعض الأحيان على أنها 1.000000001 0.999999999 أو. 898 00:43:50,360 --> 00:43:52,780 أنه قد يكون حتى 89 القيت في مكان ما هناك. 899 00:43:52,780 --> 00:43:56,560 حتى تلك الأرقام العشرية ليست ممثلة بالضبط كأنك 900 00:43:56,560 --> 00:43:58,430 نتوقع منهم أن تكون ممثلة. 901 00:43:58,430 --> 00:44:00,010 >> حتى في مشكلة تعيين - 902 00:44:00,010 --> 00:44:00,860 كان اثنين؟ - 903 00:44:00,860 --> 00:44:05,290 مشكلة تعيين اثنين، حيث تعاملنا مع أرقام النقطة العائمة، عندما كنا نريد 904 00:44:05,290 --> 00:44:08,690 منهم لتمثيل بالضبط ما كنا نريد منهم لتمثيل، وعدد 905 00:44:08,690 --> 00:44:12,860 من البنسات، أو عدد سنتا، ضربنا لهم من قبل 100. 906 00:44:12,860 --> 00:44:14,750 نحن تقريب لهم. 907 00:44:14,750 --> 00:44:18,660 ثم نقطع كل شيء وراء الفاصلة العشرية. 908 00:44:18,660 --> 00:44:22,020 كان ذلك للتأكد من أنها سوف متساوية في الواقع بالضبط ما أردنا 909 00:44:22,020 --> 00:44:22,410 لهم على قدم المساواة. 910 00:44:22,410 --> 00:44:26,870 >> لأنه عندما كنت تأخذ شيئا هذا وتطفو وتحويلها إلى كثافة العمليات، كنت 911 00:44:26,870 --> 00:44:29,860 تقطع كل شيء إلى اليمين الفاصلة العشرية. 912 00:44:29,860 --> 00:44:33,900 لأن هناك بعض النقطة العائمة عدم الدقة، قد يكون 100.000 913 00:44:33,900 --> 00:44:37,440 ممثلة 99،999999999. 914 00:44:37,440 --> 00:44:40,350 وإذا كنت خفض قبالة كل شيء ل الحق الحق بعيدا، وأنت تسير ل 915 00:44:40,350 --> 00:44:41,600 الحصول على رقم خاطئ. 916 00:44:41,600 --> 00:44:44,050 917 00:44:44,050 --> 00:44:44,180 نعم. 918 00:44:44,180 --> 00:44:45,290 >> الطالب: كان لي سؤال عن الصب. 919 00:44:45,290 --> 00:44:47,500 ما يحدث في النظام؟ 920 00:44:47,500 --> 00:44:54,480 إذا كنت تفعل تطفو، بين قوسين، 1 تقسيم بنسبة 10، وأنها لا تفعل 1 مقسوما على 10، 921 00:44:54,480 --> 00:44:58,910 ثم الحصول على 0.1، ثم اتجه قبل أن تتحول إلى تعويم؟ 922 00:44:58,910 --> 00:45:01,470 >> JASON هيرشهورن: إذا قمت بذلك تطفو 1 مقسوما على 10 - 923 00:45:01,470 --> 00:45:02,550 >> الطالب: نعم، ويساوي ثم - 924 00:45:02,550 --> 00:45:04,240 حسنا، انها تفعل عادة يكون ذلك على قدم المساواة في - 925 00:45:04,240 --> 00:45:04,690 نعم. 926 00:45:04,690 --> 00:45:06,760 كنت تريد أن تجعل من تعويم، أليس كذلك؟ 927 00:45:06,760 --> 00:45:12,790 >> JASON هيرشهورن: موافق، لذلك نحن ذاهبون ل استخدام ذلك لسغ] إلى معرفة 928 00:45:12,790 --> 00:45:15,390 إجابات لهذه الأسئلة من خلال الترميز. 929 00:45:15,390 --> 00:45:18,180 لأنك سوف ربما لديك الكثير من الأسئلة هذه اللحظة، وسيلة جيدة 930 00:45:18,180 --> 00:45:19,100 لحلها من خلال الترميز. 931 00:45:19,100 --> 00:45:21,320 لذلك نحن ذاهبون الى رمز هذا الحق الآن، ثم ونحن في طريقنا للعودة و 932 00:45:21,320 --> 00:45:24,020 رمز السؤال كان لديك. 933 00:45:24,020 --> 00:45:24,950 >> وبالتالي فإن السطر الأول - 934 00:45:24,950 --> 00:45:29,390 أنا لا ينبغي أن يكون مكتوب - ما هو أول شيء نريد أن نفعله عندما كنا 935 00:45:29,390 --> 00:45:32,250 فتح ملف جديد في gedit؟ 936 00:45:32,250 --> 00:45:34,190 >> الطالب: وتشمل. 937 00:45:34,190 --> 00:45:35,920 >> JASON هيرشهورن: تضمين ماذا؟ 938 00:45:35,920 --> 00:45:37,952 >> الطالب: مكتبة CS50. 939 00:45:37,952 --> 00:45:39,920 >> JASON هيرشهورن: OK. 940 00:45:39,920 --> 00:45:42,590 ماذا ينبغي أن ندرج؟ 941 00:45:42,590 --> 00:45:46,820 نحن مجرد الذهاب للتحقق من ما يحدث عند يلقي شيئا لتعويم. 942 00:45:46,820 --> 00:45:48,605 ولكن ما نحتاج لتشمل إذا كنا أريد أن أكتب برنامج C؟ 943 00:45:48,605 --> 00:45:49,300 >> الطالب: عادي I / O. 944 00:45:49,300 --> 00:45:50,625 >> JASON هيرشهورن: stdio.h. 945 00:45:50,625 --> 00:45:54,880 ونحن في الواقع لا تحتاج، لهذا البرنامج، cs50.h، على الرغم من انها 946 00:45:54,880 --> 00:45:55,920 دائما مفيدة إدراجه. 947 00:45:55,920 --> 00:45:58,260 لكننا بحاجة stdio.h دائما. 948 00:45:58,260 --> 00:45:59,660 >> الطالب: عندما الترميز في C؟ 949 00:45:59,660 --> 00:46:15,770 >> JASON هيرشهورن: عندما الترميز في C. 950 00:46:15,770 --> 00:46:17,090 >> ولذا فإنني حفظه لأن هذا ملف ج. 951 00:46:17,090 --> 00:46:18,590 أحصل على بعض لطيفة تسليط الضوء على تركيب. 952 00:46:18,590 --> 00:46:22,890 كتبت الفراغ داخل الرئيسي. 953 00:46:22,890 --> 00:46:24,792 ماذا يعني الفراغ؟ 954 00:46:24,792 --> 00:46:26,740 >> الطالب: لا تتخذ أي وسائط سطر الأوامر. 955 00:46:26,740 --> 00:46:28,900 >> JASON هيرشهورن: وسائل الفراغ، في هذا الحالة، الرئيسي لا يأخذ أي 956 00:46:28,900 --> 00:46:29,700 وسائط سطر الأوامر. 957 00:46:29,700 --> 00:46:32,720 في حالات أخرى، فهذا يعني أن وظيفة لا تأخذ وسيطات سطر الأوامر. 958 00:46:32,720 --> 00:46:36,560 أو وظيفة، وإذا كان لي أن أكتب الفراغ الرئيسية (الفراغ)، من شأنها أن أقول الرئيسي 959 00:46:36,560 --> 00:46:38,460 لا يعود أي شيء. 960 00:46:38,460 --> 00:46:39,960 الفراغ بحيث يعني فقط لا شيء. 961 00:46:39,960 --> 00:46:42,510 ما أود الكتابة إذا كان لي أن تأخذ وسيطات سطر الأوامر؟ 962 00:46:42,510 --> 00:46:45,250 963 00:46:45,250 --> 00:46:47,150 >> الطالب: كثافة قوس ج سلسلة قوس ضد 964 00:46:47,150 --> 00:46:49,055 >> JASON هيرشهورن: كثافة العمليات ARGC سلسلة ARGV. 965 00:46:49,055 --> 00:46:54,050 966 00:46:54,050 --> 00:46:55,572 هل هذا صحيح؟ 967 00:46:55,572 --> 00:46:58,720 >> الطالب: انها شار قوسين نجمة ARGV. 968 00:46:58,720 --> 00:47:01,730 >> JASON هيرشهورن: وهكذا يمكن أن تكتب بين قوسين سلسلة ARGV أو نجمة شار ARGV 969 00:47:01,730 --> 00:47:03,710 بين قوسين، ولكن كنت في حاجة إلى أقواس. 970 00:47:03,710 --> 00:47:06,290 لأن ARGV هو صفيف سلاسل، وتذكر. 971 00:47:06,290 --> 00:47:07,360 انها ليست سلسلة واحدة فقط. 972 00:47:07,360 --> 00:47:10,350 ذلك هو سلسلة ARGV، وهنا سلسلة واحدة تسمى ARGV. 973 00:47:10,350 --> 00:47:13,630 و، وهنا بين قوسين سلسلة ARGV مجموعة من السلاسل. 974 00:47:13,630 --> 00:47:17,865 الباحث ذلك بين قوسين ARGV سلسلة ARGC سيكون شيئا بأنني 975 00:47:17,865 --> 00:47:18,810 ربما الكتابة. 976 00:47:18,810 --> 00:47:23,050 >> لذلك أردت أن توفر في عدد صحيح؟ 977 00:47:23,050 --> 00:47:24,285 >> الطالب: نعم، صحيح. 978 00:47:24,285 --> 00:47:25,840 أو في تعويم. 979 00:47:25,840 --> 00:47:26,710 >> JASON هيرشهورن: في تعويم؟ 980 00:47:26,710 --> 00:47:30,790 مثل، تعويم x تساوي 1 مقسوما على 10. 981 00:47:30,790 --> 00:47:32,040 >> JASON هيرشهورن: OK. 982 00:47:32,040 --> 00:47:40,160 983 00:47:40,160 --> 00:47:42,240 كيف يمكنني طباعة تعويم في printf؟ 984 00:47:42,240 --> 00:47:45,100 985 00:47:45,100 --> 00:47:46,714 ماذا؟ 986 00:47:46,714 --> 00:47:47,560 >> الطالب:٪ و. 987 00:47:47,560 --> 00:47:48,300 >> JASON هيرشهورن:٪ و. 988 00:47:48,300 --> 00:47:50,810 ما هو عدد صحيح؟ 989 00:47:50,810 --> 00:47:52,110 د أو ط. 990 00:47:52,110 --> 00:47:53,000 ما هو سلسلة؟ 991 00:47:53,000 --> 00:47:54,240 >> الطالب: ق. 992 00:47:54,240 --> 00:47:56,140 >> JASON هيرشهورن: ق. 993 00:47:56,140 --> 00:47:57,550 كيف يمكنني الحصول على خط جديد؟ 994 00:47:57,550 --> 00:47:58,800 >> الطالب: خط مائل عكسي ن. 995 00:47:58,800 --> 00:48:04,610 996 00:48:04,610 --> 00:48:07,100 >> JASON هيرشهورن: ما يمكنني العودة إذا أشواط الرئيسية بشكل صحيح؟ 997 00:48:07,100 --> 00:48:08,360 >> الطالب: 0. 998 00:48:08,360 --> 00:48:09,430 أحتاج لكتابة هذا الخط، على الرغم من؟ 999 00:48:09,430 --> 00:48:10,170 >> الطالب: رقم 1000 00:48:10,170 --> 00:48:11,513 حسنا، نحن لن اكتبها، ثم. 1001 00:48:11,513 --> 00:48:16,450 1002 00:48:16,450 --> 00:48:17,190 يمكن الجميع قراءة ذلك؟ 1003 00:48:17,190 --> 00:48:18,485 أنها تبدو صغيرة بعض الشيء. 1004 00:48:18,485 --> 00:48:20,160 يمكن أن نرى الجميع، أو ينبغي أنا جعله أكبر؟ 1005 00:48:20,160 --> 00:48:23,480 1006 00:48:23,480 --> 00:48:25,100 أعتقد للكاميرا، اننا سنحقق أنها أكبر قليلا، وإن كان. 1007 00:48:25,100 --> 00:48:35,750 1008 00:48:35,750 --> 00:48:38,410 >> JASON هيرشهورن: إذا كنت تريد أن تتحول هذه ج في ملف قابل للتنفيذ، ما 1009 00:48:38,410 --> 00:48:39,260 يمكنني الكتابة؟ 1010 00:48:39,260 --> 00:48:41,610 >> الطالب: جعل الاختبار. 1011 00:48:41,610 --> 00:48:42,080 >> JASON هيرشهورن: عذرا؟ 1012 00:48:42,080 --> 00:48:42,790 >> الطالب: جعل الاختبار. 1013 00:48:42,790 --> 00:48:44,040 >> JASON هيرشهورن: جعل الاختبار. 1014 00:48:44,040 --> 00:48:46,700 1015 00:48:46,700 --> 00:48:48,410 كنا نتحدث عن هذا الخط في وقت سابق. 1016 00:48:48,410 --> 00:48:49,140 رنة. 1017 00:48:49,140 --> 00:48:51,270 ما هو رنة؟ 1018 00:48:51,270 --> 00:48:52,200 اسم المترجم. 1019 00:48:52,200 --> 00:48:53,920 ما هو هذا الخط؟ 1020 00:48:53,920 --> 00:48:55,580 >> الطالب: مجموعات ليصل لاستخدام GDB. 1021 00:48:55,580 --> 00:48:59,230 >> JASON هيرشهورن: مجموعات الامر لاستخدام GDB. 1022 00:48:59,230 --> 00:49:02,338 هذا الخط، ما هذا؟ 1023 00:49:02,338 --> 00:49:03,290 >> الطالب: شفرة المصدر. 1024 00:49:03,290 --> 00:49:06,010 >> JASON هيرشهورن: هذا هو الملف المصدر، وملف ج. 1025 00:49:06,010 --> 00:49:08,150 ماذا هذين الخطين تفعل؟ 1026 00:49:08,150 --> 00:49:10,245 أو هذين لا خطوط. 1027 00:49:10,245 --> 00:49:12,300 >> الطالب: أسماء انها اختبار. 1028 00:49:12,300 --> 00:49:15,410 >> JASON هيرشهورن: إذن اندفاعة س يقول: تسميته شيء مختلف. 1029 00:49:15,410 --> 00:49:16,790 وهنا كنت واصفا إياه الاختبار. 1030 00:49:16,790 --> 00:49:18,900 إذا لم يكن لديك هذا في، ما من شأنه أن اسم هذا؟ 1031 00:49:18,900 --> 00:49:20,260 >> الطالب: A.out. 1032 00:49:20,260 --> 00:49:22,340 >> JASON هيرشهورن: A.out. 1033 00:49:22,340 --> 00:49:25,366 ماذا يعني هذا القيام؟ 1034 00:49:25,366 --> 00:49:27,670 >> الطالب: روابط مكتبة الرياضيات. 1035 00:49:27,670 --> 00:49:29,550 >> JASON هيرشهورن: وهو يربط في مكتبة الرياضيات. 1036 00:49:29,550 --> 00:49:32,880 نحن لم تشمل مكتبة الرياضيات، ولكن منذ ذلك أمر شائع جدا، وانهم 1037 00:49:32,880 --> 00:49:35,780 جعل خطية لتشمل دائما مكتبة الرياضيات. 1038 00:49:35,780 --> 00:49:39,050 وبالمثل، وهذا يشمل مكتبة CS50. 1039 00:49:39,050 --> 00:49:43,010 >> موافق، لذلك إذا نحن قائمة، لدينا الآن قابل للتنفيذ يسمى الاختبار. 1040 00:49:43,010 --> 00:49:45,150 لتنفيذ ذلك، أنا أكتب الاختبار. 1041 00:49:45,150 --> 00:49:48,330 وأرى أن وجهة نظري العائمة، كما هو متوقع، يساوي 0. 1042 00:49:48,330 --> 00:49:50,890 1043 00:49:50,890 --> 00:49:51,590 يفعل ذلك - 1044 00:49:51,590 --> 00:49:52,060 لذلك - 1045 00:49:52,060 --> 00:49:55,210 >> الطالب: ثم إذا وضعت تطفو الآن، مثلك يلقي أنها تعويم - 1046 00:49:55,210 --> 00:49:56,870 >> JASON هيرشهورن: المصبوب 1 إلى تعويم؟ 1047 00:49:56,870 --> 00:49:59,180 >> الطالب: لا، ويلقي الشيء الكامل - 1048 00:49:59,180 --> 00:49:59,500 نعم. 1049 00:49:59,500 --> 00:50:02,460 إذا كنت لم يفعلوا ذلك، سوف التي تجعل من 0.1؟ 1050 00:50:02,460 --> 00:50:07,170 >> JASON هيرشهورن: موافق، لذلك بسرعة حقا، 1 مقسوما على 10، وتلك هي 1051 00:50:07,170 --> 00:50:08,690 الأعداد الصحيحة يجري تقسيمها. 1052 00:50:08,690 --> 00:50:13,580 لذلك عندما تقوم بتقسيم الأعداد الصحيحة، وانهم 0، وكنت تحفظ في أن 0 1053 00:50:13,580 --> 00:50:17,170 تطفو، وذلك لأن الخط المائل هو قسمة عدد صحيح فقط. 1054 00:50:17,170 --> 00:50:19,180 لذلك نحن الآن تحول شيئا الى تعويم. 1055 00:50:19,180 --> 00:50:21,650 >> دعونا نرى ما سيحدث. 1056 00:50:21,650 --> 00:50:22,900 اننا سنحقق الاختبار. 1057 00:50:22,900 --> 00:50:25,870 1058 00:50:25,870 --> 00:50:31,090 وحتى الآن نرى أن هذا الخط المائل لم يكن قسمة عدد صحيح، انها عائمة 1059 00:50:31,090 --> 00:50:32,640 تقسيم نقطة. 1060 00:50:32,640 --> 00:50:35,700 لأن واحدا من حججها قد يلقي لتعويم. 1061 00:50:35,700 --> 00:50:38,380 حتى الآن انه كان يقول، وعلاج هذا التقسيم وكأننا نتعامل مع 1062 00:50:38,380 --> 00:50:40,140 نقطة عائمة، وليس مع أعداد صحيحة. 1063 00:50:40,140 --> 00:50:42,760 وهكذا نحصل على الجواب نتوقع. 1064 00:50:42,760 --> 00:50:44,620 >> دعونا نرى ما سيحدث - 1065 00:50:44,620 --> 00:50:47,103 عفوا. 1066 00:50:47,103 --> 00:50:51,646 إذا أردت أن طباعة أكثر العشرية البقع، وكيف يمكن أن أفعل ذلك؟ 1067 00:50:51,646 --> 00:50:55,550 >> الطالب: نقطة نقطة و، أو ما يصل المنازل العشرية على النحو الذي تريد. 1068 00:50:55,550 --> 00:51:02,280 1069 00:51:02,280 --> 00:51:04,440 >> JASON هيرشهورن: حتى أنا طباعة 10 نقاط عشرية. 1070 00:51:04,440 --> 00:51:06,610 ونحن نرى الآن نحن نحصل بعض الاشياء الغريبة. 1071 00:51:06,610 --> 00:51:09,650 والتي تعود على سؤالك حول النقطة العائمة الدقة. 1072 00:51:09,650 --> 00:51:10,950 هناك أشياء غريبة المخزنة في هنا. 1073 00:51:10,950 --> 00:51:13,650 1074 00:51:13,650 --> 00:51:15,275 >> حسنا، لا أن أجيب على سؤالك؟ 1075 00:51:15,275 --> 00:51:18,550 1076 00:51:18,550 --> 00:51:20,200 ماذا لم تريد إلى رمز بسرعة؟ 1077 00:51:20,200 --> 00:51:25,470 >> الطالب: أردت فقط أن نرى ما إذا كان أو لا، إذا كنت حررت بعض المؤشر، 1078 00:51:25,470 --> 00:51:30,410 سواء كان ذلك مؤشر لا يزال خزنت في انها عنوان ما كانت عليه 1079 00:51:30,410 --> 00:51:32,170 مشيرا إلى سابقا. 1080 00:51:32,170 --> 00:51:34,100 >> JASON هيرشهورن: OK، لذلك دعونا نفعل ذلك. 1081 00:51:34,100 --> 00:51:38,030 شار نجمة PTR، وهذا يخلق متغير دعا PTR من نوع شار نجوم. 1082 00:51:38,030 --> 00:51:39,280 كيف يمكنني إرسال malloc؟ 1083 00:51:39,280 --> 00:51:40,550 ألدين؟ 1084 00:51:40,550 --> 00:51:41,800 >> ALDEN: فقط malloc. 1085 00:51:41,800 --> 00:51:44,820 1086 00:51:44,820 --> 00:51:51,040 ولكن بعد ذلك يجب أن يكون حجم و في هذه الحالة، أعتقد كنت 1087 00:51:51,040 --> 00:51:52,465 مشيرا الى أن شار. 1088 00:51:52,465 --> 00:51:54,450 لذلك سيكون من شار. 1089 00:51:54,450 --> 00:51:57,520 >> JASON هيرشهورن: موافق، لذلك أكثر بشكل عام، داخل - 1090 00:51:57,520 --> 00:51:58,770 دعونا تحريرها. 1091 00:51:58,770 --> 00:52:05,100 1092 00:52:05,100 --> 00:52:09,260 داخل malloc، تريد رقم من بايت على الكومة. 1093 00:52:09,260 --> 00:52:12,320 عموما، ما رأيناه أننا به هو ونحن في طريقنا إلى malloc 1094 00:52:12,320 --> 00:52:14,940 سلاسل، على سبيل المثال، أو صفائف من الأعداد الصحيحة. 1095 00:52:14,940 --> 00:52:21,600 لذلك إذا كنا نريد 10 الأعداد الصحيحة، أو 10 حرف، 10 سيعطينا 10. 1096 00:52:21,600 --> 00:52:24,370 ثم أن حجم حرف إعطاء لنا أن حجم حرف، والتي في 1097 00:52:24,370 --> 00:52:25,120 هذه الحالة هو 1 بايت. 1098 00:52:25,120 --> 00:52:26,250 نحصل على 10 بايت. 1099 00:52:26,250 --> 00:52:28,540 إذا كان لنا أن إرسال حجم كثافة العمليات، التي من شأنها أن تعطينا 40 بايت. 1100 00:52:28,540 --> 00:52:31,520 >> أكثر من ذلك بشكل عام، داخل malloc هو عدد البايتات التي تريدها. 1101 00:52:31,520 --> 00:52:34,620 في هذه الحالة، نحن نحصل على 1 بايت. 1102 00:52:34,620 --> 00:52:36,900 والذي يبدو وكأنه استخدام غريب من malloc، ولكن لدينا 1103 00:52:36,900 --> 00:52:38,470 أغراض المنطقي. 1104 00:52:38,470 --> 00:52:40,420 ولذلك لا يوجد ذلك. 1105 00:52:40,420 --> 00:52:43,420 >> ونحن في طريقنا إلى الكلمة الحرة. 1106 00:52:43,420 --> 00:52:47,040 نتخلص من ذلك، ونحن استخدام PTR مرة أخرى. 1107 00:52:47,040 --> 00:52:48,750 وماذا تريد أن تحقق؟ 1108 00:52:48,750 --> 00:52:50,550 >> الطالب: أردت فقط أن تحقق ما إذا كان أو لم يكن هناك أي شيء 1109 00:52:50,550 --> 00:52:51,900 داخل منه. 1110 00:52:51,900 --> 00:52:53,050 >> JASON هيرشهورن: حتى ما إذا فإنه أشار إلى أي شيء؟ 1111 00:52:53,050 --> 00:52:57,740 >> الطالب: نعم، بالضبط، سواء فإنه لا يزال لديها عنوان الذاكرة. 1112 00:52:57,740 --> 00:53:02,220 >> JASON هيرشهورن: إذن أنت تريد للتحقق من قيمة PTR؟ 1113 00:53:02,220 --> 00:53:03,470 >> الطالب: نعم، بالضبط. 1114 00:53:03,470 --> 00:53:07,940 1115 00:53:07,940 --> 00:53:10,160 >> JASON هيرشهورن: ماذا أنا أكتب هنا إذا كنت تريد أن تحقق قيمة 1116 00:53:10,160 --> 00:53:11,880 نقطة - ما هو، الأردن وقال، قيمة؟ 1117 00:53:11,880 --> 00:53:13,720 أو ما يتم تخزينها داخل PTR؟ 1118 00:53:13,720 --> 00:53:14,620 >> الطالب: عنوان الذاكرة. 1119 00:53:14,620 --> 00:53:16,330 >> JASON هيرشهورن: عنوان الذاكرة. 1120 00:53:16,330 --> 00:53:20,520 حتى لو كنت مجرد كتابة هذا، وأنها سوف أعطني قيمة PTR. 1121 00:53:20,520 --> 00:53:22,800 وكيف يمكنني طباعة عنوان ذاكرة؟ 1122 00:53:22,800 --> 00:53:26,470 ما هو شكل سلسلة لعنوان الذاكرة؟ 1123 00:53:26,470 --> 00:53:27,430 >> الطالب: ص٪. 1124 00:53:27,430 --> 00:53:28,050 >> JASON هيرشهورن:٪ ع. 1125 00:53:28,050 --> 00:53:29,500 ٪ s غير سلسلة. 1126 00:53:29,500 --> 00:53:30,750 ع٪ للمؤشر. 1127 00:53:30,750 --> 00:53:40,820 1128 00:53:40,820 --> 00:53:43,540 هل هذا صحيح؟ 1129 00:53:43,540 --> 00:53:44,790 وهذا هو الصحيح. 1130 00:53:44,790 --> 00:53:49,450 1131 00:53:49,450 --> 00:53:51,040 حتى PTR يساوي - 1132 00:53:51,040 --> 00:53:53,350 فإنه لا يزال لديه شيء في ذلك. 1133 00:53:53,350 --> 00:53:56,110 1134 00:53:56,110 --> 00:53:57,645 وربما هذا هو أكثر مسألة مثيرة للاهتمام. 1135 00:53:57,645 --> 00:53:59,198 ماذا تفعل هذا الخط؟ 1136 00:53:59,198 --> 00:54:00,830 >> الطالب: أخطاء SEG و. 1137 00:54:00,830 --> 00:54:01,310 >> JASON هيرشهورن: ماذا؟ 1138 00:54:01,310 --> 00:54:02,678 >> الطالب: أعتقد أنه SEG أخطاء. 1139 00:54:02,678 --> 00:54:03,574 >> JASON هيرشهورن: صاحبة الجلالة؟ 1140 00:54:03,574 --> 00:54:04,920 >> الطالب: وأعتقد أنه سوف SEG خطأ. 1141 00:54:04,920 --> 00:54:08,265 >> JASON هيرشهورن: إذن هذا الخط من التعليمات البرمجية، نجم PTR، ما 1142 00:54:08,265 --> 00:54:10,152 لا نجم يعني؟ 1143 00:54:10,152 --> 00:54:11,240 >> الطالب: محتوى. 1144 00:54:11,240 --> 00:54:11,560 >> JASON هيرشهورن: نعم. 1145 00:54:11,560 --> 00:54:13,910 يذهب للحصول على محتوى. 1146 00:54:13,910 --> 00:54:16,830 لذلك هذا هو سبيلنا للذهاب إلى الذاكرة هناك معالجة وتعطيني ذلك. 1147 00:54:16,830 --> 00:54:21,030 اعتدت٪ ج الحق هنا لأن هناك والأحرف المخزنة هناك. 1148 00:54:21,030 --> 00:54:23,390 لذلك نحن في طريقنا للذهاب إلى أننا عنوان مجرد رأى - أو على الأرجح سوف يكون 1149 00:54:23,390 --> 00:54:25,190 هذه مختلفة قليلا مرة ونحن تشغيل البرنامج. 1150 00:54:25,190 --> 00:54:28,010 ولكن سوف نذهب إلى هذا العنوان الذي نعرفه لا يزال موجودا 1151 00:54:28,010 --> 00:54:29,260 وانظر ما هو هناك. 1152 00:54:29,260 --> 00:54:35,640 1153 00:54:35,640 --> 00:54:37,110 >> لذلك لم SEG خطأ. 1154 00:54:37,110 --> 00:54:38,970 انها فقط لا تعطينا أي شيء. 1155 00:54:38,970 --> 00:54:43,350 قد يكون الواقع أعطانا شيء من هذا، إلا أننا لا نستطيع رؤيته. 1156 00:54:43,350 --> 00:54:45,110 والتي تعود إلى هذه الفكرة - 1157 00:54:45,110 --> 00:54:47,270 ونحن لن تحصل على الكثير في هذا، لأن هذا هو ما وراء 1158 00:54:47,270 --> 00:54:48,460 نطاق هذه الدورة. 1159 00:54:48,460 --> 00:54:51,260 ولكن تحدثنا عن الحق هنا، وإذا كنا تتجاوز حدود الصفيف من قبل 1160 00:54:51,260 --> 00:54:54,890 1، ونحن لا يمكن أن تحصل في ورطة. 1161 00:54:54,890 --> 00:54:58,550 >> في بعض الأحيان، عندما تذهب قبالة بنسبة 1، كنت تفعل شيئا خاطئا، وكنت 1162 00:54:58,550 --> 00:54:59,220 يمكن أن تحصل في ورطة. 1163 00:54:59,220 --> 00:55:00,820 ولكنك لا تحصل دائما في ورطة. 1164 00:55:00,820 --> 00:55:05,170 ذلك يعتمد على كيفية الكثير من شيئا سيئا لك لا، وأنت تسير في الحصول على المتاعب. 1165 00:55:05,170 --> 00:55:07,790 الذي لا يعني، أن تكون قذرة مع التعليمات البرمجية الخاصة بك. 1166 00:55:07,790 --> 00:55:12,080 ولكنه يعني، أن البرنامج لن استقال دائما، حتى إذا كنت تذهب إلى مكان ما 1167 00:55:12,080 --> 00:55:14,130 كنت ليس من المفترض أن تذهب. 1168 00:55:14,130 --> 00:55:18,170 >> وخير مثال على ذلك هو، والكثير من الناس في مشكلتهم تعيين 3، والتي 1169 00:55:18,170 --> 00:55:22,350 و15، لم تحقق حدود اللوحة. 1170 00:55:22,350 --> 00:55:25,860 لذلك كنت تتطلع إلى اليسار، وتطلعت إلى الحق، وتطلعت إلى أعلى، وبدا 1171 00:55:25,860 --> 00:55:27,000 إلى أسفل. 1172 00:55:27,000 --> 00:55:31,540 لكنك لم تحقق لمعرفة ما إذا كان الجزء العلوي كان يجري في الواقع أن يكون على متن الطائرة. 1173 00:55:31,540 --> 00:55:35,220 والكثير من الناس الذين فعلوا ذلك و تحولت أنه في، عملت برنامجهم 1174 00:55:35,220 --> 00:55:38,960 تماما، لأن حيث كان هذا المجلس المخزنة في الذاكرة، وإذا ذهبت واحدة 1175 00:55:38,960 --> 00:55:42,300 فوقه أو التحقق من أن الذاكرة عنوان، لم يكن هناك أي شيء 1176 00:55:42,300 --> 00:55:44,870 الرهيبة لا سيما حول ذلك، لذلك كان برنامجك لا 1177 00:55:44,870 --> 00:55:45,970 الذهاب الى الصراخ لك. 1178 00:55:45,970 --> 00:55:48,870 >> لكننا لا تزال تقلع النقاط إذا أنت لم تحقق ذلك، لأنك 1179 00:55:48,870 --> 00:55:50,850 كانوا يفعلون شيئا أنك لم تكن من المفترض القيام به، وعملتم 1180 00:55:50,850 --> 00:55:51,860 حصلت في ورطة. 1181 00:55:51,860 --> 00:55:54,040 الاحتمالات هي، رغم ذلك، وربما كنت لم تفعل ذلك. 1182 00:55:54,040 --> 00:55:57,790 لذلك هذا هو إظهار أن، نعم، لا يزال بوسعنا أن تذهب إليه. 1183 00:55:57,790 --> 00:55:59,010 ونحن لا تحصل في مشكلة في هذه القضية. 1184 00:55:59,010 --> 00:56:04,000 إذا حاولنا أن نفعل قراءة 100 حرفا المقبل، لكنا 1185 00:56:04,000 --> 00:56:06,000 ربما تحصل في ورطة. 1186 00:56:06,000 --> 00:56:09,400 ويمكنك قراءة رمز 100 القادمة أحرف إذا كنت تريد عن طريق القيام ببعض 1187 00:56:09,400 --> 00:56:10,110 نوع من لحلقة. 1188 00:56:10,110 --> 00:56:10,850 نعم. 1189 00:56:10,850 --> 00:56:16,250 >> الطالب: وبما أننا خصصت التي الفضاء على القيمة الفعلية، ونحن لن 1190 00:56:16,250 --> 00:56:17,050 يكون في الواقع قادرا على رؤية أي شيء. 1191 00:56:17,050 --> 00:56:21,740 ينبغي لنا أن نحاول ذلك مع الإعداد الذي يساوي مثل ج أو شيء من هذا؟ 1192 00:56:21,740 --> 00:56:22,640 >> JASON هيرشهورن: السؤال الكبير. 1193 00:56:22,640 --> 00:56:25,340 كيف يمكنني ضبط هذه القيمة - 1194 00:56:25,340 --> 00:56:28,980 ما سطر من التعليمات البرمجية يمكنني الكتابة على السطر سبعة لتفعل ما قال لك؟ 1195 00:56:28,980 --> 00:56:34,040 >> الطالب: النجم PTR يساوي واحد ج انتهى الاقتباس واحدة. 1196 00:56:34,040 --> 00:56:36,970 >> JASON هيرشهورن: ولهذا وضع حرف، ج، في هذا الموقع، 1197 00:56:36,970 --> 00:56:40,200 لأن مرة أخرى، أن نجم يعني الذهاب الى هناك. 1198 00:56:40,200 --> 00:56:43,320 وعند استخدامها على الجانب الأيسر من وعامل التعيين، الذي يساوي 1199 00:56:43,320 --> 00:56:47,270 توقيع، ونحن لن تحصل على هذا قيمة بقدر ما هو ضبط تلك القيمة. 1200 00:56:47,270 --> 00:56:48,520 الآن دعونا نرى ما سيحدث. 1201 00:56:48,520 --> 00:56:54,700 1202 00:56:54,700 --> 00:56:56,770 >> وضعنا شيء هناك وكان هناك. 1203 00:56:56,770 --> 00:56:58,000 دعونا الحرة. 1204 00:56:58,000 --> 00:57:00,100 بعض الاشياء ربما حدث على الكومة. 1205 00:57:00,100 --> 00:57:01,890 حتى انها ليست هناك بعد الآن. 1206 00:57:01,890 --> 00:57:07,440 ولكن مرة أخرى، نحن لا يحصلون في ورطة للذهاب هناك. 1207 00:57:07,440 --> 00:57:10,260 >> أنا أفعل هذا في التعليمات البرمجية لتوضيح أن الكثير من هذه 1208 00:57:10,260 --> 00:57:12,410 الأسئلة التي لديك، وانهم مثيرة للاهتمام حقا 1209 00:57:12,410 --> 00:57:13,650 يجيب الكثير من الوقت. 1210 00:57:13,650 --> 00:57:15,260 وانهم أسئلة جيدة حقا. 1211 00:57:15,260 --> 00:57:19,010 ويمكنك معرفة بها على الخاصة بك إذا، على سبيل المثال، 1212 00:57:19,010 --> 00:57:19,990 نحن لسنا في القسم. 1213 00:57:19,990 --> 00:57:20,940 نعم. 1214 00:57:20,940 --> 00:57:24,430 >> الطالب: لأنك لم ترسل الماوس للفي أي مكان، لا تحتاج إلى 1215 00:57:24,430 --> 00:57:26,530 استخدام malloc؟ 1216 00:57:26,530 --> 00:57:28,400 >> JASON هيرشهورن: ولذلك فإن هذا يعود على سؤالك الأول. 1217 00:57:28,400 --> 00:57:28,620 [؟ ؟] 1218 00:57:28,620 --> 00:57:29,980 هل هو مجرد متغير محلي؟ 1219 00:57:29,980 --> 00:57:32,280 Malloc هنا ليست مقنعة. 1220 00:57:32,280 --> 00:57:35,260 استخدام malloc هنا ليس ان مقنعة لأنها 1221 00:57:35,260 --> 00:57:36,500 مجرد متغير محلي. 1222 00:57:36,500 --> 00:57:40,970 >> الطالب: إذن هل يمكن أن تفعل شار نجمة PTR يساوي مرحبا؟ 1223 00:57:40,970 --> 00:57:41,400 >> JASON هيرشهورن: أوه. 1224 00:57:41,400 --> 00:57:43,300 لذلك نحن في طريقنا للحصول على العودة الآن على سؤالك الأول. 1225 00:57:43,300 --> 00:57:46,885 أعتقد أنك لم تكن راض مع جوابي. 1226 00:57:46,885 --> 00:57:48,220 موافق؟ 1227 00:57:48,220 --> 00:57:49,226 مثل ذلك؟ 1228 00:57:49,226 --> 00:57:49,682 >> الطالب: نعم. 1229 00:57:49,682 --> 00:57:50,932 الانتظار. 1230 00:57:50,932 --> 00:57:54,090 1231 00:57:54,090 --> 00:57:57,850 >> JASON هيرشهورن: وأين هل تريد أن تطبع؟ 1232 00:57:57,850 --> 00:58:00,026 لذلك سنقوم بطباعة سلسلة من هذا القبيل؟ 1233 00:58:00,026 --> 00:58:06,380 1234 00:58:06,380 --> 00:58:07,630 >> الطالب: مثيرة للاهتمام. 1235 00:58:07,630 --> 00:58:09,900 1236 00:58:09,900 --> 00:58:14,285 >> JASON هيرشهورن: هكذا يقول هذا هذا حجة لديه نوع من حرف. 1237 00:58:14,285 --> 00:58:17,200 1238 00:58:17,200 --> 00:58:18,620 لذلك ينبغي أن يكون هذا الطابع. 1239 00:58:18,620 --> 00:58:25,170 1240 00:58:25,170 --> 00:58:26,280 >> الطالب: فقط يأخذ أول واحد. 1241 00:58:26,280 --> 00:58:28,610 >> JASON هيرشهورن: ولذلك فإن هذا هو ما قلته من قبل. 1242 00:58:28,610 --> 00:58:34,240 كما قلت، انها ليست تخزين سلسلة داخل المؤشر متغير. 1243 00:58:34,240 --> 00:58:35,120 انها تخزين - 1244 00:58:35,120 --> 00:58:36,350 >> الطالب: القيمة الأولى من السلسلة. 1245 00:58:36,350 --> 00:58:40,810 >> JASON هيرشهورن: عنوان القيمة الأولى من السلسلة. 1246 00:58:40,810 --> 00:58:46,940 إذا كان لنا أن طباعة هذا، نحن الحصول على قيمة داخل المؤشر. 1247 00:58:46,940 --> 00:58:51,005 وسنرى أنه، في الواقع، عنوان الذاكرة. 1248 00:58:51,005 --> 00:58:53,595 1249 00:58:53,595 --> 00:58:56,440 >> فهل هذا يعقل؟ 1250 00:58:56,440 --> 00:58:56,940 آسف. 1251 00:58:56,940 --> 00:58:58,996 الانتظار، لا أن يجيب لكم المسألة، على الرغم من؟ 1252 00:58:58,996 --> 00:58:59,790 >> الطالب: نعم. 1253 00:58:59,790 --> 00:59:05,830 >> JASON هيرشهورن: هذا هو سطر من التعليمات البرمجية خلق سلسلة ثم آخر 1254 00:59:05,830 --> 00:59:09,115 مؤشر متغير وهذا ما يشير لهذه السلسلة، أن مجموعة. 1255 00:59:09,115 --> 00:59:14,320 1256 00:59:14,320 --> 00:59:14,980 نعم. 1257 00:59:14,980 --> 00:59:19,200 >> الطالب: حتى إذا ذهبنا ذاكرة واحدة معالجة أخرى، سوف نحصل على ح؟ 1258 00:59:19,200 --> 00:59:21,990 1259 00:59:21,990 --> 00:59:23,150 تم تخزينه كسلسلة؟ 1260 00:59:23,150 --> 00:59:24,400 >> JASON هيرشهورن: مثل، فعلنا - 1261 00:59:24,400 --> 00:59:28,540 1262 00:59:28,540 --> 00:59:30,790 لذلك هذا هو قيمة للقيام به. 1263 00:59:30,790 --> 00:59:33,780 هذا هو الحساب النقطة التي يا رفاق شهدت قبل ويجب أن يكون 1264 00:59:33,780 --> 00:59:35,550 مريحة نسبيا مع. 1265 00:59:35,550 --> 00:59:36,905 هذا هو أقرب إلى كتابة - 1266 00:59:36,905 --> 00:59:41,980 1267 00:59:41,980 --> 00:59:46,350 إذا كان لنا أن إرسال هذا السطر من التعليمات البرمجية، رأيناه تدوين مجموعة من قبل. 1268 00:59:46,350 --> 00:59:55,900 هذا يجب أن تعطينا الثاني القيمة في هذه المجموعة، ح. 1269 00:59:55,900 --> 01:00:05,010 >> إذا فعلنا هذا، وهذا ينبغي أيضا إعطاء لنا قيمة الثانية في هذا الصفيف. 1270 01:00:05,010 --> 01:00:08,320 لأنه لا يجري لذكرى عنوان أول شيء، ولكن 1271 01:00:08,320 --> 01:00:10,530 عنوان ذاكرة من شيء واحد أكثر. 1272 01:00:10,530 --> 01:00:14,360 ثم dereferences مشغل نجمة هذا المؤشر. 1273 01:00:14,360 --> 01:00:16,940 ومرة أخرى، دعونا نرى. 1274 01:00:16,940 --> 01:00:18,664 نحصل على ح مرة أخرى. 1275 01:00:18,664 --> 01:00:20,980 >> الطالب: ماذا يفعل بالضبط إلغاء مرجعية يعني؟ 1276 01:00:20,980 --> 01:00:23,650 >> JASON هيرشهورن: إلغاء مرجعية هي كلمة يتوهم للذهاب الى. 1277 01:00:23,650 --> 01:00:26,390 تذهب إلى ذلك والحصول على ما هو هناك هو dereference مؤشر. 1278 01:00:26,390 --> 01:00:28,240 انها مجرد كلمة يتوهم لذلك. 1279 01:00:28,240 --> 01:00:29,986 >> الطالب: إذا أردنا الطباعة السلسلة بأكملها، يمكن لنا 1280 01:00:29,986 --> 01:00:31,930 تفعل مؤشر العطف؟ 1281 01:00:31,930 --> 01:00:33,490 >> JASON هيرشهورن: OK، نحن سوف أتوقف هنا. 1282 01:00:33,490 --> 01:00:35,480 نحن نذهب لتنتهي هنا. 1283 01:00:35,480 --> 01:00:41,760 العطف يعطيك عنوان موقع، لذلك عند القيام من العطف 1284 01:00:41,760 --> 01:00:44,080 متغير، فهو يوفر لك عنوان حيث يتم تخزين هذا المتغير. 1285 01:00:44,080 --> 01:00:48,580 سوف مؤشر العطف تعطيك عنوان PTR حيث PTR في الذاكرة. 1286 01:00:48,580 --> 01:00:50,140 >> نحن لن تستمر مع هذا المثال. 1287 01:00:50,140 --> 01:00:52,640 يمكنك معرفة هذه الأشياء بنفسك. 1288 01:00:52,640 --> 01:00:55,740 ولكن مرة أخرى، وهذا قد يكون حتى يشارف على بت يتجاوز ما تحتاج إلى معرفته ل 1289 01:00:55,740 --> 01:00:58,000 نطاق هذا المصطلح منتصف - 1290 01:00:58,000 --> 01:00:59,070 أو هذا الاختبار، إلى حد ما. 1291 01:00:59,070 --> 01:01:00,270 آسف. 1292 01:01:00,270 --> 01:01:03,770 >> نحن ذاهبون للمضي قدما، لأنني سوف تريد أن تفعل واحدة مشكلة الترميز 1293 01:01:03,770 --> 01:01:05,100 قبل انتهاء الوقت. 1294 01:01:05,100 --> 01:01:09,340 ونحن نذهب إلى رمز ما أعتقد هو الأكثر إلحاحا من هذه 1295 01:01:09,340 --> 01:01:11,020 أمثلة، atoi. 1296 01:01:11,020 --> 01:01:14,520 لذلك كان هذا السؤال على مسابقة قبل عامين. 1297 01:01:14,520 --> 01:01:17,810 ولدي على متن هنا. 1298 01:01:17,810 --> 01:01:20,680 >> وطلب من الناس على هذه المسابقة - 1299 01:01:20,680 --> 01:01:23,640 انها منحت أكثر من ذلك بقليل في tesxt السؤال، لكنني القضاء على 1300 01:01:23,640 --> 01:01:26,640 النص لأنه كان لا لزوم لها لأغراضنا الآن. 1301 01:01:26,640 --> 01:01:29,180 كان مجرد بعض المعلومات الأساسية على ما atoi فعلت. 1302 01:01:29,180 --> 01:01:31,425 ولكن تعلمون جميعا هي غاية و دراية atoi. 1303 01:01:31,425 --> 01:01:35,620 >> أقترح عليك أن رمز هذا على ورقة من الورق. 1304 01:01:35,620 --> 01:01:39,310 وأود أيضا أن أقترح عليك استخدام استراتيجية أننا قد ذهبت أكثر 1305 01:01:39,310 --> 01:01:41,040 الكثير في القسم لدينا. 1306 01:01:41,040 --> 01:01:44,130 أولا، تأكد من أنك تفهم تفعل ما atoi ل. 1307 01:01:44,130 --> 01:01:47,580 رسم صورة أو الخروج مع بعض الصورة الذهنية منه في رأسك. 1308 01:01:47,580 --> 01:01:51,120 المقبل، الكتابة خارج شبة الكود لهذا الغرض. 1309 01:01:51,120 --> 01:01:53,120 على هذه المسابقة، إذا كان كل ما عليه هو شبة الكود، على الأقل كنت 1310 01:01:53,120 --> 01:01:54,550 وضع شيء أسفل. 1311 01:01:54,550 --> 01:02:00,070 ومن ثم تعيين شبة الكود على أن C. إذا كان لديك الاختيار في حياتك 1312 01:02:00,070 --> 01:02:03,760 شبة الكود، مثل معرفة ما اذا كان شيء و1، التي تعين على وإذا 1313 01:02:03,760 --> 01:02:05,750 حالة وهكذا دواليك. 1314 01:02:05,750 --> 01:02:07,850 وأخيرا، رمز البرنامج في C. 1315 01:02:07,850 --> 01:02:15,000 >> لذلك يذهب إلى atoi وتأخذ خمس دقائق إلى رمز هذا على ورقة 1316 01:02:15,000 --> 01:02:19,480 الورق، والذي هو على الارجح حول مقدار الوقت الذي سيستغرق على 1317 01:02:19,480 --> 01:02:21,260 مسابقة لatoi التعليمات البرمجية. 1318 01:02:21,260 --> 01:02:27,060 خمس إلى 15 دقائق، وخمسة إلى 12، وخمسة ل 10 دقيقة، تدور حول مبلغ 1319 01:02:27,060 --> 01:02:30,150 الوقت كنت تنفق على هذه السؤال في هذه المسابقة. 1320 01:02:30,150 --> 01:02:31,670 حتى تأخذ خمس دقائق الآن، من فضلك. 1321 01:02:31,670 --> 01:02:35,957 وإذا كان لديك أي أسئلة، ورفع يدك وسآتي حولها. 1322 01:02:35,957 --> 01:06:39,570 1323 01:06:39,570 --> 01:06:41,066 >> [من المحادثات الجانبية] 1324 01:06:41,066 --> 01:08:35,279 1325 01:08:35,279 --> 01:08:37,580 >> JASON هيرشهورن: حسنا، التي كانت خمس دقائق. 1326 01:08:37,580 --> 01:08:39,880 كان ذلك على الارجح حول كمية الوقت كنت تنفق على أنه في مسابقة، 1327 01:08:39,880 --> 01:08:42,120 ربما نهاية منخفضة من ذلك الوقت. 1328 01:08:42,120 --> 01:08:44,010 سنقوم باختصار في بعض الشيء. 1329 01:08:44,010 --> 01:08:45,740 دعونا نبدأ هذا الترميز. 1330 01:08:45,740 --> 01:08:49,479 وإذا لم نحصل على كل طريق، إجابات لهذا وهذا 1331 01:08:49,479 --> 01:08:54,189 هي مسألة مسابقة المتاحة، مرة أخرى، سقوط 2011 هو عندما يكون هذا السؤال 1332 01:08:54,189 --> 01:08:54,913 ظهرت على هذه المسابقة. 1333 01:08:54,913 --> 01:08:57,830 >> وأنه كان يستحق ثماني نقاط على مسابقة ثم. 1334 01:08:57,830 --> 01:09:01,140 ثماني نقاط على نهاية عالية من قدر من النقاط شيئا يستحق. 1335 01:09:01,140 --> 01:09:04,790 معظم الأسئلة هي في حدود من واحد إلى ست نقاط. 1336 01:09:04,790 --> 01:09:08,500 لذلك هذا هو أكثر تحديا السؤال، لعلى يقين. 1337 01:09:08,500 --> 01:09:09,750 أي شخص يمكن أن يحصل لي بدأت؟ 1338 01:09:09,750 --> 01:09:13,260 1339 01:09:13,260 --> 01:09:15,380 >> عموما، ما نحن ذاهبون تريد أن تفعل مع هذا 1340 01:09:15,380 --> 01:09:17,550 تعمل atoi، منطقيا؟ 1341 01:09:17,550 --> 01:09:19,569 ماذا نريد أن نفعل؟ 1342 01:09:19,569 --> 01:09:22,279 لذلك نحن ذاهبون الى الكتابة بعض شبة الكود. 1343 01:09:22,279 --> 01:09:24,090 >> الطالب: تحويل الأحرف إلى أعداد صحيحة. 1344 01:09:24,090 --> 01:09:26,700 >> JASON هيرشهورن: تحويل الأحرف إلى أعداد صحيحة. 1345 01:09:26,700 --> 01:09:27,479 موافق. 1346 01:09:27,479 --> 01:09:30,870 فكيف العديد من الشخصيات نحن بحاجة الى الذهاب الى الذهاب من خلال؟ 1347 01:09:30,870 --> 01:09:32,295 >> الطالب: كل منهم. 1348 01:09:32,295 --> 01:09:34,100 >> الطالب: جميع الشخصيات في السلسلة. 1349 01:09:34,100 --> 01:09:35,540 >> JASON هيرشهورن: كل من الأحرف في السلسلة. 1350 01:09:35,540 --> 01:09:42,180 لذلك إذا كنا نريد الذهاب من خلال كل حرف في السلسلة، ما هو الشيء 1351 01:09:42,180 --> 01:09:44,560 في C رأيناه الذي سمح لنا أن نذهب من خلال كل 1352 01:09:44,560 --> 01:09:45,939 حرف في السلسلة؟ 1353 01:09:45,939 --> 01:09:46,819 >> الطلاب: ألف لحلقة. 1354 01:09:46,819 --> 01:09:48,069 >> JASON هيرشهورن: A للحلقة. 1355 01:09:48,069 --> 01:09:52,020 1356 01:09:52,020 --> 01:09:55,330 لذلك نحن ذاهبون الى حلقة من خلال كل حرف في ليالي. 1357 01:09:55,330 --> 01:10:00,940 >> ثم ما نحن ذاهبون تريد أن تفعل عندما نحصل على حرف معين؟ 1358 01:10:00,940 --> 01:10:02,480 يقول أننا الحصول على تمرير 90. 1359 01:10:02,480 --> 01:10:03,460 نحصل على 9. 1360 01:10:03,460 --> 01:10:04,240 انها حرف. 1361 01:10:04,240 --> 01:10:07,440 ماذا نريد أن نفعل مع هذا الحرف 9؟ 1362 01:10:07,440 --> 01:10:10,082 >> الطالب: طرح عليه من الطابع 0؟ 1363 01:10:10,082 --> 01:10:11,860 >> الطالب: إضافة 0؟ 1364 01:10:11,860 --> 01:10:13,350 >> JASON هيرشهورن: طرح فإنه من الطابع 0؟ 1365 01:10:13,350 --> 01:10:13,800 >> الطالب: نعم. 1366 01:10:13,800 --> 01:10:15,573 >> JASON هيرشهورن: لماذا كنت تريد أن تفعل ذلك؟ 1367 01:10:15,573 --> 01:10:16,560 >> الطالب: [غير مسموع] 1368 01:10:16,560 --> 01:10:17,010 القيمة. 1369 01:10:17,010 --> 01:10:18,380 قيمتها كثافة العمليات. 1370 01:10:18,380 --> 01:10:21,580 >> JASON هيرشهورن: موافق، لذلك أخذنا الطابع 9، تطرحه من 1371 01:10:21,580 --> 01:10:25,820 حرف 0 للحصول على صحيح الفعلية 9. 1372 01:10:25,820 --> 01:10:27,070 الحلو. 1373 01:10:27,070 --> 01:10:31,255 1374 01:10:31,255 --> 01:10:37,000 وكيف يمكنك أن تعرف ذلك الحرف 9 ناقص 0 الحرف هو 9؟ 1375 01:10:37,000 --> 01:10:39,222 ما لم الرسم البياني نظرتم؟ 1376 01:10:39,222 --> 01:10:43,130 >> الطالب: هناك تسعة منطقيا الأماكن بين 9 و 0. 1377 01:10:43,130 --> 01:10:44,620 أو هل يمكن أن ننظر في جدول ASCII. 1378 01:10:44,620 --> 01:10:45,120 >> JASON هيرشهورن: جدول ASCII. 1379 01:10:45,120 --> 01:10:46,490 ولكن نعم، كنت الصحيح كذلك. 1380 01:10:46,490 --> 01:10:47,780 لذلك طرحنا 0. 1381 01:10:47,780 --> 01:10:49,010 حتى الآن لدينا عدد صحيح 9. 1382 01:10:49,010 --> 01:10:49,970 وماذا نريد أن نفعل مع ذلك؟ 1383 01:10:49,970 --> 01:10:54,970 اذا كان لدينا 90، انها أول عدد صحيح لدينا ما نريد أن نفعله؟ 1384 01:10:54,970 --> 01:10:58,180 >> الطالب: كنت وضعت في عدد صحيح مؤقتة مجموعة، ثم القيام الرياضيات إليها 1385 01:10:58,180 --> 01:11:02,088 في وقت لاحق لجعله إلى النهاية. 1386 01:11:02,088 --> 01:11:03,020 >> JASON هيرشهورن: OK. 1387 01:11:03,020 --> 01:11:06,990 >> الطالب: أنت يمكن أن تبدأ في نهاية مجموعة ومن ثم المضي قدما حتى 1388 01:11:06,990 --> 01:11:10,350 انه في كل مرة كنت المضي قدما، كنت اضربها 10. 1389 01:11:10,350 --> 01:11:10,830 >> JASON هيرشهورن: OK. 1390 01:11:10,830 --> 01:11:12,250 هذا يبدو وكأنه جميلة فكرة مقنعة. 1391 01:11:12,250 --> 01:11:16,040 يمكننا أن نبدأ في نهاية مجموعة لدينا، ويمكننا استخدام strleng. 1392 01:11:16,040 --> 01:11:17,030 يمكننا استخدام strleng هنا. 1393 01:11:17,030 --> 01:11:18,870 فسوف نحصل على طول سلسلة لدينا. 1394 01:11:18,870 --> 01:11:20,100 نبدأ في نهاية المطاف. 1395 01:11:20,100 --> 01:11:29,170 و+ أول واحد، ونحن نأخذ فقط أن صحيح، وربما نخلق مثل 1396 01:11:29,170 --> 01:11:32,270 متغير عدد صحيح مطابق أعلى حيث نحن تخزين كل شيء. 1397 01:11:32,270 --> 01:11:37,340 لذلك نحن من خلال كل حلقة شار في ليالي من الخلف إلى الأمام، ونحن طرح 0، و 1398 01:11:37,340 --> 01:11:42,790 ثم نأخذه، واعتمادا على حيث هو، ونحن اضربها 1399 01:11:42,790 --> 01:11:45,860 من قبل قوة من 10. 1400 01:11:45,860 --> 01:11:50,644 لأن أول واحد، فماذا نحن مضاعفة الحرف أقصى اليمين من قبل؟ 1401 01:11:50,644 --> 01:11:51,440 >> الطالب: 10 إلى 0. 1402 01:11:51,440 --> 01:11:53,170 >> JASON هيرشهورن: 10 إلى 0. 1403 01:11:53,170 --> 01:11:56,010 ماذا نضرب الثانية أقصى اليمين حرف؟ 1404 01:11:56,010 --> 01:11:57,450 >> الطالب: [غير مسموع]. 1405 01:11:57,450 --> 01:11:57,960 >> JASON هيرشهورن: ماذا؟ 1406 01:11:57,960 --> 01:11:59,150 >> الطالب: 10 إلى 1. 1407 01:11:59,150 --> 01:12:00,420 >> JASON هيرشهورن: 10 إلى 1. 1408 01:12:00,420 --> 01:12:03,754 الحرف أقصى اليمين ثالث؟ 1409 01:12:03,754 --> 01:12:04,580 >> الطالب: 10 إلى 2. 1410 01:12:04,580 --> 01:12:05,350 >> JASON هيرشهورن: 10 إلى 2. 1411 01:12:05,350 --> 01:12:07,200 >> الطالب: آسف، أنا لا أفهم ما نقوم به هنا. 1412 01:12:07,200 --> 01:12:08,640 >> JASON هيرشهورن: OK، دعونا نعود، ثم. 1413 01:12:08,640 --> 01:12:12,500 لذلك نحن في طريقنا للحصول على مرت في سلسلة. 1414 01:12:12,500 --> 01:12:14,470 لأننا كتابة atoi. 1415 01:12:14,470 --> 01:12:15,260 لذلك نحن في الحصول على تمرير سلسلة. 1416 01:12:15,260 --> 01:12:17,640 ويقول نحن نحصل على مر في سلسلة 90. 1417 01:12:17,640 --> 01:12:19,930 >> تم تعيين أول شيء نحن في طريقنا للقيام متغير عدد صحيح أننا الجديدة 1418 01:12:19,930 --> 01:12:22,150 مجرد الذهاب الى خلق كما صحيحا الجديد. 1419 01:12:22,150 --> 01:12:24,630 هذا ما نحن ذاهبون للعودة في نهاية المطاف. 1420 01:12:24,630 --> 01:12:30,110 نحن في حاجة للذهاب من خلال كل حرف في سلسلة لأننا قررنا 1421 01:12:30,110 --> 01:12:34,430 أننا في حاجة إلى لمس كل واحد و ثم إضافته إلى عدد صحيح الجديد. 1422 01:12:34,430 --> 01:12:36,330 >> ولكن لا يمكننا فقط إضافته كرقم. 1423 01:12:36,330 --> 01:12:38,270 نحن لا يمكن أن تأخذ فقط 9 و إضافة 9 إلى عدد صحيح لدينا. 1424 01:12:38,270 --> 01:12:40,560 ذلك يعتمد على مكان ما هو في السلسلة. 1425 01:12:40,560 --> 01:12:42,960 نحن بحاجة الى الذهاب الى مضاعفة من قبل قوة من 10. 1426 01:12:42,960 --> 01:12:45,580 لأن هذه هي الطريقة يعمل 10 قاعدة. 1427 01:12:45,580 --> 01:12:49,050 >> لذلك نحن في طريقنا للحصول على الفعلية حرف، أو عدد صحيح الفعلية 1428 01:12:49,050 --> 01:12:53,860 عدد، وذلك بطرح الطابع 0 من الطابع 9 كما فعلنا مع 1429 01:12:53,860 --> 01:12:57,560 يحذف حرف A من رأس المال أيا كان الطابع كان لدينا في واحدة من 1430 01:12:57,560 --> 01:12:58,120 تلك المشاكل. 1431 01:12:58,120 --> 01:13:04,190 لذلك سنقوم في الواقع الحصول على رقم من 0 إلى 9 حفظها كملف العدد الحقيقي، وسنقوم 1432 01:13:04,190 --> 01:13:07,590 اضربها من قبل قوة من 10 تبعا على ما نحن فيه في السلسلة. 1433 01:13:07,590 --> 01:13:19,430 1434 01:13:19,430 --> 01:13:22,575 ثم ونحن في طريقنا لإضافة إعادته لدينا في متغير عدد صحيح جديد. 1435 01:13:22,575 --> 01:13:32,840 1436 01:13:32,840 --> 01:13:37,890 >> فما هذا من شأنه أن تبدو وكأنها من شأنه أن - سنقوم رسم أكثر من هنا. 1437 01:13:37,890 --> 01:13:40,086 إذا كان لنا أن تحصل مرت في سلسلة 90 - 1438 01:13:40,086 --> 01:13:41,336 >> الطالب: [غير مسموع]. 1439 01:13:41,336 --> 01:13:43,190 1440 01:13:43,190 --> 01:13:45,540 >> JASON هيرشهورن: ولكن atoi تأخذ سلسلة. 1441 01:13:45,540 --> 01:13:46,350 لذلك نحن في طريقنا للذهاب من خلال عقد. 1442 01:13:46,350 --> 01:13:49,900 سنقوم الحصول على تمرير في 90. 1443 01:13:49,900 --> 01:13:51,540 نذهب من الخلف إلى الأمام. 1444 01:13:51,540 --> 01:13:53,920 أخذنا 0. 1445 01:13:53,920 --> 01:13:55,080 >> الطالب: أنا آسف. 1446 01:13:55,080 --> 01:13:55,880 ربما هذا هو غبي. 1447 01:13:55,880 --> 01:13:59,440 إذا نحن الحصول على تمريرها في سلسلة، لماذا هو 90 ما نحن 1448 01:13:59,440 --> 01:14:00,260 الحصول على تمريرها في؟ 1449 01:14:00,260 --> 01:14:03,160 لأن 90 هو عدد صحيح. 1450 01:14:03,160 --> 01:14:06,820 >> JASON هيرشهورن: لأن يأخذ atoi سلسلة وتحويله إلى عدد صحيح 1451 01:14:06,820 --> 01:14:08,320 تمثيل هذه السلسلة. 1452 01:14:08,320 --> 01:14:13,650 ولكن السلسلة 90 ليس صحيحا 90 أو رقم 90. 1453 01:14:13,650 --> 01:14:17,920 السلسلة 90 هو مجموعة من اثنين، أو ثلاثة أحرف، بالأحرى، 9 1454 01:14:17,920 --> 01:14:22,740 حرف، حرف 0، و مائل 0 حرف. 1455 01:14:22,740 --> 01:14:26,260 >> ونحن كتابة atoi لأنه، ل سبيل المثال، عندما كنت تأخذ الأمر 1456 01:14:26,260 --> 01:14:30,230 وسيطة سطر، ويتم حفظه في ARGV، يتم حفظه كسلسلة. 1457 01:14:30,230 --> 01:14:32,940 ولكن إذا كنت ترغب في التعامل معها كرقم، تحتاج إلى تحويله إلى 1458 01:14:32,940 --> 01:14:34,700 صحيح الفعلية. 1459 01:14:34,700 --> 01:14:37,210 وهذا ما فعلناه واحدة من مجموعات مشكلتنا. 1460 01:14:37,210 --> 01:14:38,800 وهذا ما فعلناه في عدد مجموعات مشكلتنا. 1461 01:14:38,800 --> 01:14:41,690 استغرق الجميع بأن عدد صحيح كما وسيطة سطر الأوامر. 1462 01:14:41,690 --> 01:14:46,490 ولهذا السبب لدينا وظيفة atoi تأخذ سلسلة. 1463 01:14:46,490 --> 01:14:51,910 >> ذلك مرة أخرى، في مثالنا هنا، نحن ذاهب الى اتخاذ واحد آخر. 1464 01:14:51,910 --> 01:14:55,050 ونحن في طريقنا لطرح الطابع 0 منه، لأن أحرف 0 1465 01:14:55,050 --> 01:14:58,810 تطرح من قبل حرف 0 يمنحك العدد الفعلي 0، وفقا ل 1466 01:14:58,810 --> 01:15:00,950 وASCII الرياضيات الذي نقوم به. 1467 01:15:00,950 --> 01:15:04,870 >> لأن يتم تمثيل الأحرف مختلفة من الفعلية - و 1468 01:15:04,870 --> 01:15:08,830 حرف، على سبيل المثال، صغيرة على 97. 1469 01:15:08,830 --> 01:15:10,260 انها ليست - عفوا! 1470 01:15:10,260 --> 01:15:13,290 انها ليست كل ما تتوقعون أن يكون، 0، على سبيل المثال. 1471 01:15:13,290 --> 01:15:16,200 ولذلك عليك أن طرح حرف للحصول على 0. 1472 01:15:16,200 --> 01:15:18,950 >> لذلك نحن في طريقنا للقيام بذلك هنا للحصول على العدد الفعلي. 1473 01:15:18,950 --> 01:15:22,560 ثم نحن نذهب لاضربها قوة من 10 اعتمادا على حيث 1474 01:15:22,560 --> 01:15:27,030 هو في السلسلة، ثم أخذ ذلك وإضافته إلى حامل مكاننا 1475 01:15:27,030 --> 01:15:32,520 متغير حتى نتمكن من الخروج مع لدينا عدد صحيح جديدة النهائية. 1476 01:15:32,520 --> 01:15:35,080 فهل هذا من المنطقي أن الجميع؟ 1477 01:15:35,080 --> 01:15:37,730 >> لذلك نحن لن رمز هذا في الوقت الراهن، لأننا 1478 01:15:37,730 --> 01:15:38,830 الحصول في وقت قصير. 1479 01:15:38,830 --> 01:15:40,860 اعتذر عن توقيت ذلك. 1480 01:15:40,860 --> 01:15:44,620 ولكن هذا هو ما، ونأمل، تفعل تكون قادرة على القيام على هذه المسابقة - في 1481 01:15:44,620 --> 01:15:47,710 جدا الأقل، والحصول على هذه شبة الكود مكتوبة. 1482 01:15:47,710 --> 01:15:50,840 >> ومن ثم، إذا كنا لكتابة شبة الكود، في الواقع، يمكننا أن نفعل هذا 1483 01:15:50,840 --> 01:15:51,490 بسرعة كبيرة. 1484 01:15:51,490 --> 01:15:55,230 كل سطر من تعليقات ونحن كتبنا هنا يترجم إلى حوالي 1485 01:15:55,230 --> 01:15:56,970 سطر واحد من التعليمات البرمجية C. 1486 01:15:56,970 --> 01:16:01,780 إعلان جديد متغير والكتابة حلقة، وبعض الطرح، وبعض 1487 01:16:01,780 --> 01:16:07,070 الضرب، وبعض الاحالة. 1488 01:16:07,070 --> 01:16:09,020 ربما كنا نريد أيضا أن كتابة سطر والعودة. 1489 01:16:09,020 --> 01:16:12,040 ونحن قد ترغب أيضا في وضع بعض الشيكات هنا. 1490 01:16:12,040 --> 01:16:12,655 نعم. 1491 01:16:12,655 --> 01:16:15,720 >> الطالب: إذن يمكننا علاج ق كسلسلة الفعلية؟ 1492 01:16:15,720 --> 01:16:18,730 لأنني أعرف انها مجرد عنوان. 1493 01:16:18,730 --> 01:16:22,090 مثل، كيف تحصل على طول السلسلة التي يتم تمريرها من خلال؟ 1494 01:16:22,090 --> 01:16:25,310 >> JASON هيرشهورن: فكيف فعلت طول سلسلة؟ 1495 01:16:25,310 --> 01:16:25,830 Strlen. 1496 01:16:25,830 --> 01:16:26,660 >> الطالب: strlen، نعم. 1497 01:16:26,660 --> 01:16:30,550 ولكن يمكنك وضع ق ك حجة لذلك؟ 1498 01:16:30,550 --> 01:16:34,620 >> JASON هيرشهورن: strlen ذلك يأخذ نجم شار. 1499 01:16:34,620 --> 01:16:38,090 ويترتب على ذلك أن النجم شار، و يحتفظ العد حتى يحصل على 1500 01:16:38,090 --> 01:16:41,865 مائل 0. كان strlen الواقع واحد من البرامج الأخرى التي 1501 01:16:41,865 --> 01:16:42,850 كانوا في طريقهم إلى رمز. 1502 01:16:42,850 --> 01:16:44,560 هذا هو واحد جيد آخر إلى رمز. 1503 01:16:44,560 --> 01:16:47,270 أن واحدة من أسهل قليلا، لأنه إذا وأنت تسير في التفكير في ذلك 1504 01:16:47,270 --> 01:16:47,830 من الناحية النظرية - 1505 01:16:47,830 --> 01:16:51,620 قلت للتو بصوت عال - يتبع strlen مؤشر واستمر على هذه الحال و 1506 01:16:51,620 --> 01:16:54,210 عد وتتبع حتى تصل إلى مائل 0. 1507 01:16:54,210 --> 01:16:56,530 >> الطالب: حسنا، حصلت عليه. 1508 01:16:56,530 --> 01:17:00,200 >> JASON هيرشهورن: حتى أفضل من الحظ في مسابقة 0 غدا. 1509 01:17:00,200 --> 01:17:03,170 إذا كان لديك أي أسئلة، وسوف أكون تكون خارج بعد ذلك. 1510 01:17:03,170 --> 01:17:05,610 لا تتردد في الكتابة لي. 1511 01:17:05,610 --> 01:17:08,480 وصول إلى TF الخاصة بك إذا كنت ليس في القسم الخاص بي، أو الحصول على بلدي 1512 01:17:08,480 --> 01:17:10,005 البريد الالكتروني إذا كنت تريد ذلك. 1513 01:17:10,005 --> 01:17:13,140 >> إذا كنت تريد أن يفزع وترسل فقط لي رسالة بالبريد الالكتروني، والبريد الإلكتروني freakout، وسوف أكون 1514 01:17:13,140 --> 01:17:16,710 نرسل لك مرة أخرى، مثل، وجه مبتسم، أو، مثل، نكتة أو شيء من هذا. 1515 01:17:16,710 --> 01:17:18,190 لذا لا تتردد في أن تفعل ذلك أيضا. 1516 01:17:18,190 --> 01:17:20,750 حظا سعيدا مرة أخرى، وسوف أكون أراك كل أسبوع المقبل. 1517 01:17:20,750 --> 01:17:23,435