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