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