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